Compare commits
No commits in common. "master" and "v4.0" have entirely different histories.
@ -1,5 +1,5 @@
|
||||
<Project>
|
||||
<PropertyGroup>
|
||||
<Version>4.3</Version>
|
||||
<Version>4.0</Version>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
|
@ -3,12 +3,16 @@ using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Numerics;
|
||||
using System.Text.Json;
|
||||
using System.Text.Json.Nodes;
|
||||
using System.Text.Json.Serialization;
|
||||
using System.Text.Json.Serialization.Metadata;
|
||||
using Dalamud.Game.ClientState.Objects;
|
||||
using Dalamud.Game.ClientState.Objects.Enums;
|
||||
using Dalamud.Game.ClientState.Objects.Types;
|
||||
using Dalamud.Game.Command;
|
||||
using Dalamud.Plugin.Services;
|
||||
using Lumina.Excel.Sheets;
|
||||
using Lumina.Excel.GeneratedSheets;
|
||||
using Questionable.Model;
|
||||
using Questionable.Model.Gathering;
|
||||
using Questionable.Model.Questing;
|
||||
@ -66,14 +70,14 @@ internal sealed class EditorCommands : IDisposable
|
||||
if (target == null || target.ObjectKind != ObjectKind.GatheringPoint)
|
||||
throw new Exception("No valid target");
|
||||
|
||||
var gatheringPoint = _dataManager.GetExcelSheet<GatheringPoint>().GetRowOrDefault(target.DataId);
|
||||
var gatheringPoint = _dataManager.GetExcelSheet<GatheringPoint>()!.GetRow(target.DataId);
|
||||
if (gatheringPoint == null)
|
||||
throw new Exception("Invalid gathering point");
|
||||
|
||||
FileInfo targetFile;
|
||||
GatheringRoot root;
|
||||
var locationsInTerritory = _plugin.GetLocationsInTerritory(_clientState.TerritoryType).ToList();
|
||||
var location = locationsInTerritory.SingleOrDefault(x => x.Id == gatheringPoint.Value.GatheringPointBase.RowId);
|
||||
var location = locationsInTerritory.SingleOrDefault(x => x.Id == gatheringPoint.GatheringPointBase.Row);
|
||||
if (location != null)
|
||||
{
|
||||
targetFile = location.File;
|
||||
@ -92,7 +96,7 @@ internal sealed class EditorCommands : IDisposable
|
||||
}
|
||||
else
|
||||
{
|
||||
(targetFile, root) = CreateNewFile(gatheringPoint.Value, target);
|
||||
(targetFile, root) = CreateNewFile(gatheringPoint, target);
|
||||
_chatGui.Print($"Creating new file under {targetFile.FullName}", "qG");
|
||||
}
|
||||
|
||||
@ -170,16 +174,16 @@ internal sealed class EditorCommands : IDisposable
|
||||
?.File.Directory;
|
||||
if (targetFolder == null)
|
||||
{
|
||||
var territoryInfo = _dataManager.GetExcelSheet<TerritoryType>().GetRow(_clientState.TerritoryType);
|
||||
var territoryInfo = _dataManager.GetExcelSheet<TerritoryType>()!.GetRow(_clientState.TerritoryType)!;
|
||||
targetFolder = _plugin.PathsDirectory
|
||||
.CreateSubdirectory(ExpansionData.ExpansionFolders[(EExpansionVersion)territoryInfo.ExVersion.RowId])
|
||||
.CreateSubdirectory(territoryInfo.PlaceName.Value.Name.ToString());
|
||||
.CreateSubdirectory(ExpansionData.ExpansionFolders[(EExpansionVersion)territoryInfo.ExVersion.Row])
|
||||
.CreateSubdirectory(territoryInfo.PlaceName.Value!.Name.ToString());
|
||||
}
|
||||
|
||||
FileInfo targetFile =
|
||||
new FileInfo(
|
||||
Path.Combine(targetFolder.FullName,
|
||||
$"{gatheringPoint.GatheringPointBase.RowId}_{gatheringPoint.PlaceName.Value.Name}_{(_clientState.LocalPlayer!.ClassJob.RowId == 16 ? "MIN" : "BTN")}.json"));
|
||||
$"{gatheringPoint.GatheringPointBase.Row}_{gatheringPoint.PlaceName.Value!.Name}_{(_clientState.LocalPlayer!.ClassJob.Id == 16 ? "MIN" : "BTN")}.json"));
|
||||
var root = new GatheringRoot
|
||||
{
|
||||
Author = [_configuration.AuthorName],
|
||||
|
@ -59,7 +59,7 @@ public sealed class RendererPlugin : IDalamudPlugin
|
||||
_editorWindow = new EditorWindow(this, _editorCommands, dataManager, targetManager, clientState, objectTable)
|
||||
{ IsOpen = true };
|
||||
_windowSystem.AddWindow(_editorWindow);
|
||||
_currentClassJob = (EClassJob?)_clientState.LocalPlayer?.ClassJob.RowId ?? EClassJob.Adventurer;
|
||||
_currentClassJob = (EClassJob?)_clientState.LocalPlayer?.ClassJob.Id ?? EClassJob.Adventurer;
|
||||
|
||||
_pluginInterface.GetIpcSubscriber<object>("Questionable.ReloadData")
|
||||
.Subscribe(Reload);
|
||||
|
@ -1,6 +1,7 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Numerics;
|
||||
using Dalamud.Game.ClientState.Objects;
|
||||
@ -10,7 +11,7 @@ using Dalamud.Interface.Colors;
|
||||
using Dalamud.Interface.Windowing;
|
||||
using Dalamud.Plugin.Services;
|
||||
using ImGuiNET;
|
||||
using Lumina.Excel.Sheets;
|
||||
using Lumina.Excel.GeneratedSheets;
|
||||
using Questionable.Model.Gathering;
|
||||
|
||||
namespace GatheringPathRenderer.Windows;
|
||||
@ -204,12 +205,12 @@ internal sealed class EditorWindow : Window
|
||||
}
|
||||
else if (_target != null)
|
||||
{
|
||||
var gatheringPoint = _dataManager.GetExcelSheet<GatheringPoint>().GetRowOrDefault(_target.DataId);
|
||||
var gatheringPoint = _dataManager.GetExcelSheet<GatheringPoint>()!.GetRow(_target.DataId);
|
||||
if (gatheringPoint == null)
|
||||
return;
|
||||
|
||||
var locationsInTerritory = _plugin.GetLocationsInTerritory(_clientState.TerritoryType).ToList();
|
||||
var location = locationsInTerritory.SingleOrDefault(x => x.Id == gatheringPoint.Value.GatheringPointBase.RowId);
|
||||
var location = locationsInTerritory.SingleOrDefault(x => x.Id == gatheringPoint.GatheringPointBase.Row);
|
||||
if (location != null)
|
||||
{
|
||||
var targetFile = location.File;
|
||||
@ -233,9 +234,9 @@ internal sealed class EditorWindow : Window
|
||||
}
|
||||
else
|
||||
{
|
||||
if (ImGui.Button($"Create location ({gatheringPoint.Value.GatheringPointBase.RowId})"))
|
||||
if (ImGui.Button($"Create location ({gatheringPoint.GatheringPointBase.Row})"))
|
||||
{
|
||||
var (targetFile, root) = _editorCommands.CreateNewFile(gatheringPoint.Value, _target);
|
||||
var (targetFile, root) = _editorCommands.CreateNewFile(gatheringPoint, _target);
|
||||
_plugin.Save(targetFile, root);
|
||||
}
|
||||
}
|
||||
|
@ -4,9 +4,9 @@
|
||||
"net8.0-windows7.0": {
|
||||
"DalamudPackager": {
|
||||
"type": "Direct",
|
||||
"requested": "[11.0.0, )",
|
||||
"resolved": "11.0.0",
|
||||
"contentHash": "bjT7XUlhIJSmsE/O76b7weUX+evvGQctbQB8aKXt94o+oPWxHpCepxAGMs7Thow3AzCyqWs7cOpp9/2wcgRRQA=="
|
||||
"requested": "[2.1.13, )",
|
||||
"resolved": "2.1.13",
|
||||
"contentHash": "rMN1omGe8536f4xLMvx9NwfvpAc9YFFfeXJ1t4P4PE6Gu8WCIoFliR1sh07hM+bfODmesk/dvMbji7vNI+B/pQ=="
|
||||
},
|
||||
"DotNet.ReproducibleBuilds": {
|
||||
"type": "Direct",
|
||||
@ -87,7 +87,7 @@
|
||||
"llib": {
|
||||
"type": "Project",
|
||||
"dependencies": {
|
||||
"DalamudPackager": "[11.0.0, )"
|
||||
"DalamudPackager": "[2.1.13, )"
|
||||
}
|
||||
},
|
||||
"questionable.model": {
|
||||
|
2
LLib
2
LLib
@ -1 +1 @@
|
||||
Subproject commit e4bbc05ede6f6f01e7028b24614ed8cb333e909c
|
||||
Subproject commit 70b0bef2459898a70f7b34b4d196bbaeb72397b1
|
@ -1,118 +0,0 @@
|
||||
{
|
||||
"$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,16 +62,6 @@
|
||||
{
|
||||
"Sequence": 255,
|
||||
"Steps": [
|
||||
{
|
||||
"Position": {
|
||||
"X": 58.39701,
|
||||
"Y": -48.000008,
|
||||
"Z": -172.36507
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "WalkTo",
|
||||
"Fly": true
|
||||
},
|
||||
{
|
||||
"DataId": 1016803,
|
||||
"Position": {
|
||||
@ -80,7 +70,8 @@
|
||||
"Z": -174.63953
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "CompleteQuest"
|
||||
"InteractionType": "CompleteQuest",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -58,16 +58,6 @@
|
||||
{
|
||||
"Sequence": 2,
|
||||
"Steps": [
|
||||
{
|
||||
"Position": {
|
||||
"X": 58.39701,
|
||||
"Y": -48.000008,
|
||||
"Z": -172.36507
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "WalkTo",
|
||||
"Fly": true
|
||||
},
|
||||
{
|
||||
"DataId": 1016803,
|
||||
"Position": {
|
||||
@ -76,7 +66,8 @@
|
||||
"Z": -174.63953
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -111,16 +102,6 @@
|
||||
{
|
||||
"Sequence": 255,
|
||||
"Steps": [
|
||||
{
|
||||
"Position": {
|
||||
"X": 58.39701,
|
||||
"Y": -48.000008,
|
||||
"Z": -172.36507
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "WalkTo",
|
||||
"Fly": true
|
||||
},
|
||||
{
|
||||
"DataId": 1016803,
|
||||
"Position": {
|
||||
@ -129,7 +110,8 @@
|
||||
"Z": -174.63953
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "CompleteQuest"
|
||||
"InteractionType": "CompleteQuest",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -98,17 +98,6 @@
|
||||
{
|
||||
"Sequence": 255,
|
||||
"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,
|
||||
"Position": {
|
||||
@ -117,7 +106,9 @@
|
||||
"Z": -174.63953
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "CompleteQuest"
|
||||
"InteractionType": "CompleteQuest",
|
||||
"Fly": true,
|
||||
"AetheryteShortcut": "The Dravanian Forelands - Anyx Trine"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -62,17 +62,6 @@
|
||||
{
|
||||
"Sequence": 255,
|
||||
"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,
|
||||
"Position": {
|
||||
@ -81,7 +70,9 @@
|
||||
"Z": -174.63953
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "CompleteQuest"
|
||||
"InteractionType": "CompleteQuest",
|
||||
"Fly": true,
|
||||
"AetheryteShortcut": "The Dravanian Forelands - Anyx Trine"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -91,17 +91,6 @@
|
||||
{
|
||||
"Sequence": 255,
|
||||
"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,
|
||||
"Position": {
|
||||
@ -110,7 +99,9 @@
|
||||
"Z": -174.63953
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "CompleteQuest"
|
||||
"InteractionType": "CompleteQuest",
|
||||
"Fly": true,
|
||||
"AetheryteShortcut": "The Dravanian Forelands - Anyx Trine"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -91,17 +91,6 @@
|
||||
{
|
||||
"Sequence": 255,
|
||||
"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,
|
||||
"Position": {
|
||||
@ -110,7 +99,9 @@
|
||||
"Z": -174.63953
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "CompleteQuest"
|
||||
"InteractionType": "CompleteQuest",
|
||||
"Fly": true,
|
||||
"AetheryteShortcut": "The Dravanian Forelands - Anyx Trine"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -73,17 +73,6 @@
|
||||
{
|
||||
"Sequence": 255,
|
||||
"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,
|
||||
"Position": {
|
||||
@ -92,7 +81,9 @@
|
||||
"Z": -174.63953
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "CompleteQuest"
|
||||
"InteractionType": "CompleteQuest",
|
||||
"Fly": true,
|
||||
"AetheryteShortcut": "The Dravanian Forelands - Anyx Trine"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -58,17 +58,6 @@
|
||||
{
|
||||
"Sequence": 2,
|
||||
"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,
|
||||
"Position": {
|
||||
@ -77,7 +66,9 @@
|
||||
"Z": -174.63953
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true,
|
||||
"AetheryteShortcut": "The Dravanian Forelands - Anyx Trine"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -1,113 +1,114 @@
|
||||
{
|
||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||
"Author": "AnimaMachinae",
|
||||
"QuestSequence": [
|
||||
{
|
||||
"Sequence": 0,
|
||||
"Steps": [
|
||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||
"Author": "AnimaMachinae",
|
||||
"QuestSequence": [
|
||||
{
|
||||
"DataId": 1016803,
|
||||
"Position": {
|
||||
"X": 57.297607,
|
||||
"Y": -47.842846,
|
||||
"Z": -174.63953
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "AcceptQuest"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1017031,
|
||||
"Position": {
|
||||
"X": 74.20459,
|
||||
"Y": -48.533592,
|
||||
"Z": -171.12994
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Interact"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 2,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2006915,
|
||||
"Position": {
|
||||
"X": 96.45227,
|
||||
"Y": -66.2395,
|
||||
"Z": 616.6017
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Action",
|
||||
"Action": "Fumigate",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 3,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2006916,
|
||||
"Position": {
|
||||
"X": -149.95044,
|
||||
"Y": -55.25299,
|
||||
"Z": 541.37476
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Action",
|
||||
"Action": "Fumigate",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 4,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2006917,
|
||||
"Position": {
|
||||
"X": -625.0859,
|
||||
"Y": -49.94281,
|
||||
"Z": 491.02002
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Action",
|
||||
"Action": "Fumigate",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 255,
|
||||
"Steps": [
|
||||
{
|
||||
"Position": {
|
||||
"X": 58.39701,
|
||||
"Y": -48.000008,
|
||||
"Z": -172.36507
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "WalkTo",
|
||||
"Fly": true,
|
||||
"AetheryteShortcut": "The Dravanian Forelands - Anyx Trine"
|
||||
"Sequence": 0,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1016803,
|
||||
"Position": {
|
||||
"X": 57.297607,
|
||||
"Y": -47.842846,
|
||||
"Z": -174.63953
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "AcceptQuest"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 1016803,
|
||||
"Position": {
|
||||
"X": 57.297607,
|
||||
"Y": -47.842846,
|
||||
"Z": -174.63953
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "CompleteQuest"
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1017031,
|
||||
"Position": {
|
||||
"X": 74.20459,
|
||||
"Y": -48.533592,
|
||||
"Z": -171.12994
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Interact"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 2,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2006915,
|
||||
"Position": {
|
||||
"X": 96.45227,
|
||||
"Y": -66.2395,
|
||||
"Z": 616.6017
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Action",
|
||||
"Action": "Fumigate",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 3,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2006916,
|
||||
"Position": {
|
||||
"X": -149.95044,
|
||||
"Y": -55.25299,
|
||||
"Z": 541.37476
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Action",
|
||||
"Action": "Fumigate",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 4,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2006917,
|
||||
"Position": {
|
||||
"X": -625.0859,
|
||||
"Y": -49.94281,
|
||||
"Z": 491.02002
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Action",
|
||||
"Action": "Fumigate",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 255,
|
||||
"Steps": [
|
||||
{
|
||||
"Position": {
|
||||
"X": 59.511234,
|
||||
"Y": -48,
|
||||
"Z": -171.35385
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "WalkTo",
|
||||
"Fly": true,
|
||||
"Land": true,
|
||||
"AetheryteShortcut": "The Dravanian Forelands - Anyx Trine"
|
||||
},
|
||||
{
|
||||
"DataId": 1016803,
|
||||
"Position": {
|
||||
"X": 57.297607,
|
||||
"Y": -47.842846,
|
||||
"Z": -174.63953
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "CompleteQuest"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
]
|
||||
}
|
||||
|
@ -1,173 +1,173 @@
|
||||
{
|
||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||
"Author": "AnimaMachinae",
|
||||
"QuestSequence": [
|
||||
{
|
||||
"Sequence": 0,
|
||||
"Steps": [
|
||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||
"Author": "AnimaMachinae",
|
||||
"QuestSequence": [
|
||||
{
|
||||
"DataId": 1016803,
|
||||
"Position": {
|
||||
"X": 57.297607,
|
||||
"Y": -47.842846,
|
||||
"Z": -174.63953
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "AcceptQuest"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
{
|
||||
"Position": {
|
||||
"X": 449.65012,
|
||||
"Y": -51.141403,
|
||||
"Z": 106.932205
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "WalkTo",
|
||||
"Fly": true,
|
||||
"Land": true,
|
||||
"AetheryteShortcut": "The Dravanian Forelands - Tailfeather"
|
||||
"Sequence": 0,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1016803,
|
||||
"Position": {
|
||||
"X": 57.297607,
|
||||
"Y": -47.842846,
|
||||
"Z": -174.63953
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "AcceptQuest"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 1011922,
|
||||
"Position": {
|
||||
"X": 448.56934,
|
||||
"Y": -51.141407,
|
||||
"Z": 108.93408
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Interact"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 2,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2006918,
|
||||
"Position": {
|
||||
"X": 475.69995,
|
||||
"Y": -44.174927,
|
||||
"Z": -231.46417
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Combat",
|
||||
"EnemySpawnType": "AfterItemUse",
|
||||
"ItemId": 2001961,
|
||||
"KillEnemyDataIds": [
|
||||
71224
|
||||
],
|
||||
"Fly": true,
|
||||
"Land": true,
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
128
|
||||
]
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
{
|
||||
"Position": {
|
||||
"X": 449.65012,
|
||||
"Y": -51.141403,
|
||||
"Z": 106.932205
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "WalkTo",
|
||||
"Fly": true,
|
||||
"Land": true,
|
||||
"AetheryteShortcut": "The Dravanian Forelands - Tailfeather"
|
||||
},
|
||||
{
|
||||
"DataId": 1011922,
|
||||
"Position": {
|
||||
"X": 448.56934,
|
||||
"Y": -51.141407,
|
||||
"Z": 108.93408
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Interact"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 2006920,
|
||||
"Position": {
|
||||
"X": 329.4879,
|
||||
"Y": -45.487183,
|
||||
"Z": -262.13477
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Combat",
|
||||
"EnemySpawnType": "AfterItemUse",
|
||||
"ItemId": 2001961,
|
||||
"KillEnemyDataIds": [
|
||||
5548
|
||||
],
|
||||
"Fly": true,
|
||||
"Land": true,
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
32
|
||||
]
|
||||
"Sequence": 2,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2006918,
|
||||
"Position": {
|
||||
"X": 475.69995,
|
||||
"Y": -44.174927,
|
||||
"Z": -231.46417
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Combat",
|
||||
"EnemySpawnType": "AfterItemUse",
|
||||
"ItemId": 2001961,
|
||||
"KillEnemyDataIds": [
|
||||
71224
|
||||
],
|
||||
"Fly": true,
|
||||
"Land": true,
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
128
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 2006920,
|
||||
"Position": {
|
||||
"X": 329.4879,
|
||||
"Y": -45.487183,
|
||||
"Z": -262.13477
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Combat",
|
||||
"EnemySpawnType": "AfterItemUse",
|
||||
"ItemId": 2001961,
|
||||
"KillEnemyDataIds": [
|
||||
5548
|
||||
],
|
||||
"Fly": true,
|
||||
"Land": true,
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
32
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 2006919,
|
||||
"Position": {
|
||||
"X": 535.45435,
|
||||
"Y": -32.39496,
|
||||
"Z": -410.60504
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Combat",
|
||||
"EnemySpawnType": "AfterItemUse",
|
||||
"ItemId": 2001961,
|
||||
"KillEnemyDataIds": [
|
||||
71224
|
||||
],
|
||||
"Fly": true,
|
||||
"Land": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 2006919,
|
||||
"Position": {
|
||||
"X": 535.45435,
|
||||
"Y": -32.39496,
|
||||
"Z": -410.60504
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Combat",
|
||||
"EnemySpawnType": "AfterItemUse",
|
||||
"ItemId": 2001961,
|
||||
"KillEnemyDataIds": [
|
||||
71224
|
||||
],
|
||||
"Fly": true,
|
||||
"Land": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 3,
|
||||
"Steps": [
|
||||
{
|
||||
"Position": {
|
||||
"X": 449.65012,
|
||||
"Y": -51.141403,
|
||||
"Z": 106.932205
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "WalkTo",
|
||||
"Fly": true,
|
||||
"Land": true,
|
||||
"AetheryteShortcut": "The Dravanian Forelands - Tailfeather"
|
||||
"Sequence": 3,
|
||||
"Steps": [
|
||||
{
|
||||
"Position": {
|
||||
"X": 449.65012,
|
||||
"Y": -51.141403,
|
||||
"Z": 106.932205
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "WalkTo",
|
||||
"Fly": true,
|
||||
"Land": true,
|
||||
"AetheryteShortcut": "The Dravanian Forelands - Tailfeather"
|
||||
},
|
||||
{
|
||||
"DataId": 1011922,
|
||||
"Position": {
|
||||
"X": 448.56934,
|
||||
"Y": -51.141407,
|
||||
"Z": 108.93408
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Interact"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 1011922,
|
||||
"Position": {
|
||||
"X": 448.56934,
|
||||
"Y": -51.141407,
|
||||
"Z": 108.93408
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Interact"
|
||||
"Sequence": 255,
|
||||
"Steps": [
|
||||
{
|
||||
"Position": {
|
||||
"X": 59.511234,
|
||||
"Y": -48,
|
||||
"Z": -171.35385
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "WalkTo",
|
||||
"Fly": true,
|
||||
"Land": true
|
||||
},
|
||||
{
|
||||
"DataId": 1016803,
|
||||
"Position": {
|
||||
"X": 57.297607,
|
||||
"Y": -47.842846,
|
||||
"Z": -174.63953
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "CompleteQuest"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sequence": 255,
|
||||
"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,
|
||||
"Position": {
|
||||
"X": 57.297607,
|
||||
"Y": -47.842846,
|
||||
"Z": -174.63953
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "CompleteQuest"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
]
|
||||
}
|
||||
|
@ -78,17 +78,6 @@
|
||||
{
|
||||
"Sequence": 255,
|
||||
"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,
|
||||
"Position": {
|
||||
@ -97,7 +86,9 @@
|
||||
"Z": -174.63953
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "CompleteQuest"
|
||||
"InteractionType": "CompleteQuest",
|
||||
"Fly": true,
|
||||
"AetheryteShortcut": "The Dravanian Forelands - Anyx Trine"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -55,16 +55,6 @@
|
||||
{
|
||||
"Sequence": 255,
|
||||
"Steps": [
|
||||
{
|
||||
"Position": {
|
||||
"X": 58.39701,
|
||||
"Y": -48.000008,
|
||||
"Z": -172.36507
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "WalkTo",
|
||||
"Fly": true
|
||||
},
|
||||
{
|
||||
"DataId": 1016803,
|
||||
"Position": {
|
||||
@ -73,7 +63,8 @@
|
||||
"Z": -174.63953
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "CompleteQuest"
|
||||
"InteractionType": "CompleteQuest",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -91,17 +91,6 @@
|
||||
{
|
||||
"Sequence": 2,
|
||||
"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,
|
||||
"Position": {
|
||||
@ -110,7 +99,9 @@
|
||||
"Z": -174.63953
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true,
|
||||
"AetheryteShortcut": "The Dravanian Forelands - Anyx Trine"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -1,125 +0,0 @@
|
||||
{
|
||||
"$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,16 +101,6 @@
|
||||
{
|
||||
"Sequence": 255,
|
||||
"Steps": [
|
||||
{
|
||||
"Position": {
|
||||
"X": 58.39701,
|
||||
"Y": -48.000008,
|
||||
"Z": -172.36507
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "WalkTo",
|
||||
"Fly": true
|
||||
},
|
||||
{
|
||||
"DataId": 1016803,
|
||||
"Position": {
|
||||
@ -119,7 +109,8 @@
|
||||
"Z": -174.63953
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "CompleteQuest"
|
||||
"InteractionType": "CompleteQuest",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -100,16 +100,6 @@
|
||||
{
|
||||
"Sequence": 255,
|
||||
"Steps": [
|
||||
{
|
||||
"Position": {
|
||||
"X": 58.39701,
|
||||
"Y": -48.000008,
|
||||
"Z": -172.36507
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "WalkTo",
|
||||
"Fly": true
|
||||
},
|
||||
{
|
||||
"DataId": 1016803,
|
||||
"Position": {
|
||||
@ -118,7 +108,8 @@
|
||||
"Z": -174.63953
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "CompleteQuest"
|
||||
"InteractionType": "CompleteQuest",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -73,17 +73,6 @@
|
||||
{
|
||||
"Sequence": 255,
|
||||
"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,
|
||||
"Position": {
|
||||
@ -92,7 +81,9 @@
|
||||
"Z": -174.63953
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "CompleteQuest"
|
||||
"InteractionType": "CompleteQuest",
|
||||
"Fly": true,
|
||||
"AetheryteShortcut": "The Dravanian Forelands - Anyx Trine"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -101,16 +101,6 @@
|
||||
{
|
||||
"Sequence": 255,
|
||||
"Steps": [
|
||||
{
|
||||
"Position": {
|
||||
"X": 58.39701,
|
||||
"Y": -48.000008,
|
||||
"Z": -172.36507
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "WalkTo",
|
||||
"Fly": true
|
||||
},
|
||||
{
|
||||
"DataId": 1016803,
|
||||
"Position": {
|
||||
@ -119,7 +109,8 @@
|
||||
"Z": -174.63953
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "CompleteQuest"
|
||||
"InteractionType": "CompleteQuest",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -1,70 +0,0 @@
|
||||
{
|
||||
"$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
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@ -1,84 +0,0 @@
|
||||
{
|
||||
"$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
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@ -1,44 +0,0 @@
|
||||
{
|
||||
"$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,17 +21,6 @@
|
||||
{
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
{
|
||||
"Position": {
|
||||
"X": 807.9048,
|
||||
"Y": 152.2857,
|
||||
"Z": -243.60707
|
||||
},
|
||||
"TerritoryId": 961,
|
||||
"InteractionType": "WalkTo",
|
||||
"AetheryteShortcut": "Elpis - Anagnorisis",
|
||||
"Fly": true
|
||||
},
|
||||
{
|
||||
"DataId": 2012293,
|
||||
"Position": {
|
||||
@ -41,6 +30,8 @@
|
||||
},
|
||||
"TerritoryId": 961,
|
||||
"InteractionType": "Interact",
|
||||
"AetheryteShortcut": "Elpis - Anagnorisis",
|
||||
"Fly": true,
|
||||
"TargetTerritoryId": 1025
|
||||
},
|
||||
{
|
||||
@ -129,8 +120,7 @@
|
||||
"Z": 301.9912
|
||||
},
|
||||
"TerritoryId": 956,
|
||||
"InteractionType": "CompleteQuest",
|
||||
"NextQuestId": 5252
|
||||
"InteractionType": "CompleteQuest"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -1,126 +0,0 @@
|
||||
{
|
||||
"$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"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@ -1,62 +0,0 @@
|
||||
{
|
||||
"$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
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@ -53,21 +53,7 @@
|
||||
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,
|
||||
|
@ -39,21 +39,7 @@
|
||||
},
|
||||
"TerritoryId": 1188,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true,
|
||||
"AetheryteShortcut": "Kozama'uka - Dock Poga",
|
||||
"SkipConditions": {
|
||||
"AetheryteShortcutIf": {
|
||||
"NearPosition": {
|
||||
"Position": {
|
||||
"X": 770.7179,
|
||||
"Y": 12.84657,
|
||||
"Z": -263.99634
|
||||
},
|
||||
"TerritoryId": 1188,
|
||||
"MaximumDistance": 300
|
||||
}
|
||||
}
|
||||
}
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -48,21 +48,7 @@
|
||||
null,
|
||||
null,
|
||||
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,
|
||||
@ -115,21 +101,7 @@
|
||||
},
|
||||
"TerritoryId": 1188,
|
||||
"InteractionType": "WalkTo",
|
||||
"Fly": true,
|
||||
"AetheryteShortcut": "Kozama'uka - Dock Poga",
|
||||
"SkipConditions": {
|
||||
"AetheryteShortcutIf": {
|
||||
"NearPosition": {
|
||||
"Position": {
|
||||
"X": 770.7179,
|
||||
"Y": 12.84657,
|
||||
"Z": -263.99634
|
||||
},
|
||||
"TerritoryId": 1188,
|
||||
"MaximumDistance": 300
|
||||
}
|
||||
}
|
||||
}
|
||||
"Fly": true
|
||||
},
|
||||
{
|
||||
"DataId": 1051711,
|
||||
|
@ -39,21 +39,7 @@
|
||||
},
|
||||
"TerritoryId": 1188,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true,
|
||||
"AetheryteShortcut": "Kozama'uka - Dock Poga",
|
||||
"SkipConditions": {
|
||||
"AetheryteShortcutIf": {
|
||||
"NearPosition": {
|
||||
"Position": {
|
||||
"X": 770.7179,
|
||||
"Y": 12.84657,
|
||||
"Z": -263.99634
|
||||
},
|
||||
"TerritoryId": 1188,
|
||||
"MaximumDistance": 300
|
||||
}
|
||||
}
|
||||
}
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -99,21 +85,7 @@
|
||||
},
|
||||
"TerritoryId": 1188,
|
||||
"InteractionType": "WalkTo",
|
||||
"Fly": true,
|
||||
"AetheryteShortcut": "Kozama'uka - Dock Poga",
|
||||
"SkipConditions": {
|
||||
"AetheryteShortcutIf": {
|
||||
"NearPosition": {
|
||||
"Position": {
|
||||
"X": 770.7179,
|
||||
"Y": 12.84657,
|
||||
"Z": -263.99634
|
||||
},
|
||||
"TerritoryId": 1188,
|
||||
"MaximumDistance": 300
|
||||
}
|
||||
}
|
||||
}
|
||||
"Fly": true
|
||||
},
|
||||
{
|
||||
"DataId": 1051711,
|
||||
|
@ -31,20 +31,9 @@
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
{
|
||||
"Position": {
|
||||
"X": -165.49648,
|
||||
"Y": 8.736965,
|
||||
"Z": -401.72836
|
||||
},
|
||||
"TerritoryId": 1188,
|
||||
"InteractionType": "WalkTo",
|
||||
"AetheryteShortcut": "Kozama'uka - Ok'hanu",
|
||||
"Fly": true,
|
||||
"SkipConditions": {
|
||||
"StepIf": {
|
||||
"Flying": "Locked"
|
||||
}
|
||||
}
|
||||
"InteractionType": "None",
|
||||
"AetheryteShortcut": "Kozama'uka - Ok'hanu"
|
||||
},
|
||||
{
|
||||
"DataId": 1052307,
|
||||
|
@ -1,6 +1,7 @@
|
||||
{
|
||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||
"Author": "liza",
|
||||
"Comment": "TODO untested how many RNG states this has",
|
||||
"QuestSequence": [
|
||||
{
|
||||
"Sequence": 0,
|
||||
@ -39,21 +40,7 @@
|
||||
},
|
||||
"TerritoryId": 1188,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true,
|
||||
"AetheryteShortcut": "Kozama'uka - Dock Poga",
|
||||
"SkipConditions": {
|
||||
"AetheryteShortcutIf": {
|
||||
"NearPosition": {
|
||||
"Position": {
|
||||
"X": 770.7179,
|
||||
"Y": 12.84657,
|
||||
"Z": -263.99634
|
||||
},
|
||||
"TerritoryId": 1188,
|
||||
"MaximumDistance": 300
|
||||
}
|
||||
}
|
||||
}
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -111,32 +98,6 @@
|
||||
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,21 +47,7 @@
|
||||
null,
|
||||
null,
|
||||
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,
|
||||
|
@ -1,6 +1,7 @@
|
||||
{
|
||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||
"Author": "liza",
|
||||
"Disabled": true,
|
||||
"QuestSequence": [
|
||||
{
|
||||
"Sequence": 0,
|
||||
@ -27,93 +28,6 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"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,
|
||||
"Steps": [
|
||||
|
@ -1,6 +1,7 @@
|
||||
{
|
||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||
"Author": "liza",
|
||||
"Disabled": true,
|
||||
"QuestSequence": [
|
||||
{
|
||||
"Sequence": 0,
|
||||
@ -27,74 +28,6 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"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,
|
||||
"Steps": [
|
||||
|
@ -1,6 +1,7 @@
|
||||
{
|
||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||
"Author": "liza",
|
||||
"Disabled": true,
|
||||
"QuestSequence": [
|
||||
{
|
||||
"Sequence": 0,
|
||||
@ -27,99 +28,6 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"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,
|
||||
"Steps": [
|
||||
|
@ -38,21 +38,7 @@
|
||||
},
|
||||
"TerritoryId": 1188,
|
||||
"InteractionType": "WalkTo",
|
||||
"Fly": true,
|
||||
"AetheryteShortcut": "Kozama'uka - Dock Poga",
|
||||
"SkipConditions": {
|
||||
"AetheryteShortcutIf": {
|
||||
"NearPosition": {
|
||||
"Position": {
|
||||
"X": 770.7179,
|
||||
"Y": 12.84657,
|
||||
"Z": -263.99634
|
||||
},
|
||||
"TerritoryId": 1188,
|
||||
"MaximumDistance": 300
|
||||
}
|
||||
}
|
||||
}
|
||||
"Fly": true
|
||||
},
|
||||
{
|
||||
"DataId": 1052331,
|
||||
|
@ -1,6 +1,7 @@
|
||||
{
|
||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||
"Author": "liza",
|
||||
"Disabled": true,
|
||||
"QuestSequence": [
|
||||
{
|
||||
"Sequence": 0,
|
||||
@ -27,84 +28,6 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"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,
|
||||
"Steps": [
|
||||
@ -116,7 +39,7 @@
|
||||
},
|
||||
"TerritoryId": 1188,
|
||||
"InteractionType": "WalkTo",
|
||||
"Fly": true
|
||||
"AetheryteShortcut": "Kozama'uka - Dock Poga"
|
||||
},
|
||||
{
|
||||
"DataId": 1051711,
|
||||
|
@ -163,21 +163,6 @@
|
||||
{
|
||||
"Sequence": 255,
|
||||
"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,
|
||||
"InteractionType": "AttuneAetheryte",
|
||||
|
@ -965,8 +965,7 @@
|
||||
"Katon",
|
||||
"Raiton",
|
||||
"Hide",
|
||||
"Slug Shot",
|
||||
"Bosom Brook"
|
||||
"Slug Shot"
|
||||
]
|
||||
}
|
||||
},
|
||||
|
@ -41,6 +41,5 @@ public sealed class ActionConverter() : EnumConverter<EAction>(Values)
|
||||
{ EAction.Katon, "Katon" },
|
||||
{ EAction.Raiton, "Raiton" },
|
||||
{ EAction.SlugShot, "Slug Shot" },
|
||||
{ EAction.BosomBrook, "Bosom Brook" },
|
||||
};
|
||||
}
|
||||
|
@ -47,7 +47,6 @@ public enum EAction
|
||||
Raiton = 2267,
|
||||
RabbitMedium = 2272,
|
||||
SlugShot = 7412,
|
||||
BosomBrook = 37173,
|
||||
|
||||
CollectMiner = 240,
|
||||
ScourMiner = 22182,
|
||||
@ -85,7 +84,6 @@ public static class EActionExtensions
|
||||
or EAction.YellowGulal
|
||||
or EAction.BlueGulal
|
||||
or EAction.ElectrixFlux
|
||||
or EAction.HopStep
|
||||
or EAction.BosomBrook;
|
||||
or EAction.HopStep;
|
||||
}
|
||||
}
|
||||
|
@ -142,7 +142,8 @@ internal sealed class ItemUseModule : ICombatModule
|
||||
{
|
||||
BattleChara* battleChara = (BattleChara*)gameObject.Address;
|
||||
if (_combatData.CombatItemUse.Condition == ECombatItemUseCondition.Incapacitated)
|
||||
return (*(byte*)((nint)battleChara + 0x1C68) & 0x40) != 0;
|
||||
//return (byte)(((nint)battleChara + 0x1C68) & 0x40) != 0; // FIXME 7.1
|
||||
return false;
|
||||
|
||||
if (_combatData.CombatItemUse.Condition == ECombatItemUseCondition.HealthPercent)
|
||||
return (100f * battleChara->Health / battleChara->MaxHealth) < _combatData.CombatItemUse.Value;
|
||||
|
@ -98,6 +98,7 @@ internal sealed class InteractionUiController : IDisposable
|
||||
_addonLifecycle.RegisterListener(AddonEvent.PostSetup, "SelectYesno", SelectYesnoPostSetup);
|
||||
_addonLifecycle.RegisterListener(AddonEvent.PostSetup, "PointMenu", PointMenuPostSetup);
|
||||
_addonLifecycle.RegisterListener(AddonEvent.PostSetup, "HousingSelectBlock", HousingSelectBlockPostSetup);
|
||||
_addonLifecycle.RegisterListener(AddonEvent.PostSetup, "TelepotTown", TeleportTownPostSetup);
|
||||
|
||||
unsafe
|
||||
{
|
||||
@ -755,12 +756,12 @@ internal sealed class InteractionUiController : IDisposable
|
||||
private bool TryFindWarp(ushort targetTerritoryId, string actualPrompt, [NotNullWhen(true)] out uint? warpId,
|
||||
[NotNullWhen(true)] out string? warpText)
|
||||
{
|
||||
var warps = _dataManager.GetExcelSheet<Warp>()
|
||||
var warps = _dataManager.GetExcelSheet<Warp>()!
|
||||
.Where(x => x.RowId > 0 && x.TerritoryType.RowId == targetTerritoryId);
|
||||
foreach (var entry in warps)
|
||||
{
|
||||
string excelName = entry.Name.ToString();
|
||||
string excelQuestion = entry.Question.ToString();
|
||||
string? excelName = entry.Name.ToString();
|
||||
string? excelQuestion = entry.Question.ToString();
|
||||
|
||||
if (!string.IsNullOrEmpty(excelQuestion) && GameFunctions.GameStringEquals(excelQuestion, actualPrompt))
|
||||
{
|
||||
@ -847,6 +848,46 @@ internal sealed class InteractionUiController : IDisposable
|
||||
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)
|
||||
{
|
||||
if (excelRef == null)
|
||||
@ -864,6 +905,7 @@ internal sealed class InteractionUiController : IDisposable
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
_addonLifecycle.UnregisterListener(AddonEvent.PostSetup, "TelepotTown", TeleportTownPostSetup);
|
||||
_addonLifecycle.UnregisterListener(AddonEvent.PostSetup, "HousingSelectBlock", HousingSelectBlockPostSetup);
|
||||
_addonLifecycle.UnregisterListener(AddonEvent.PostSetup, "PointMenu", PointMenuPostSetup);
|
||||
_addonLifecycle.UnregisterListener(AddonEvent.PostSetup, "SelectYesno", SelectYesnoPostSetup);
|
||||
|
@ -120,15 +120,11 @@ internal abstract class MiniTaskController<T>
|
||||
return;
|
||||
|
||||
case ETaskResult.TaskComplete:
|
||||
case ETaskResult.CreateNewTasks:
|
||||
_logger.LogInformation("{Task} → {Result}, remaining tasks: {RemainingTaskCount}",
|
||||
_taskQueue.CurrentTaskExecutor.CurrentTask, result, _taskQueue.RemainingTasks.Count());
|
||||
|
||||
OnTaskComplete(_taskQueue.CurrentTaskExecutor.CurrentTask);
|
||||
|
||||
if (result == ETaskResult.CreateNewTasks && _taskQueue.CurrentTaskExecutor is IExtraTaskCreator extraTaskCreator)
|
||||
_taskQueue.EnqueueAll(extraTaskCreator.CreateExtraTasks());
|
||||
|
||||
_taskQueue.CurrentTaskExecutor = null;
|
||||
|
||||
// handled in next update
|
||||
|
@ -11,11 +11,6 @@ internal enum ETaskResult
|
||||
/// </summary>
|
||||
SkipRemainingTasksForStep,
|
||||
|
||||
/// <summary>
|
||||
/// Assumes the task executor implements <see cref="IExtraTaskCreator"/>.
|
||||
/// </summary>
|
||||
CreateNewTasks,
|
||||
|
||||
NextStep,
|
||||
End,
|
||||
}
|
||||
|
@ -205,9 +205,17 @@ internal static class AethernetShortcut
|
||||
|
||||
private void DoTeleport()
|
||||
{
|
||||
logger.LogInformation("Using lifestream to teleport to {Destination}", Task.To);
|
||||
lifestreamIpc.Teleport(Task.To);
|
||||
_teleported = true;
|
||||
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);
|
||||
lifestreamIpc.Teleport(Task.To);
|
||||
_teleported = true;
|
||||
}
|
||||
}
|
||||
|
||||
public override ETaskResult Update()
|
||||
|
@ -4,6 +4,7 @@ using System.Linq;
|
||||
using Dalamud.Game.Text;
|
||||
using Dalamud.Game.Text.SeStringHandling;
|
||||
using Dalamud.Plugin.Services;
|
||||
using FFXIVClientStructs.FFXIV.Application.Network.WorkDefinitions;
|
||||
using FFXIVClientStructs.FFXIV.Client.Game;
|
||||
using LLib.GameData;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
@ -18,7 +19,14 @@ namespace Questionable.Controller.Steps.Shared;
|
||||
|
||||
internal static class Gather
|
||||
{
|
||||
internal sealed class Factory : ITaskFactory
|
||||
internal sealed class Factory(
|
||||
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)
|
||||
{
|
||||
@ -27,69 +35,45 @@ internal static class Gather
|
||||
|
||||
foreach (var itemToGather in step.ItemsToGather)
|
||||
{
|
||||
yield return new DelayedGatheringTask(itemToGather, quest);
|
||||
}
|
||||
}
|
||||
}
|
||||
EClassJob currentClassJob = (EClassJob)clientState.LocalPlayer!.ClassJob.RowId;
|
||||
if (!gatheringData.TryGetGatheringPointId(itemToGather.ItemId, currentClassJob,
|
||||
out GatheringPointId? gatheringPointId))
|
||||
throw new TaskException($"No gathering point found for item {itemToGather.ItemId}");
|
||||
|
||||
internal sealed record DelayedGatheringTask(GatheredItem GatheredItem, Quest Quest) : ITask
|
||||
{
|
||||
public override string ToString() => $"Gathering(pending for {GatheredItem.ItemId})";
|
||||
}
|
||||
if (!gatheringPointRegistry.TryGetGatheringPoint(gatheringPointId, out GatheringRoot? gatheringRoot))
|
||||
throw new TaskException($"No path found for gathering point {gatheringPointId}");
|
||||
|
||||
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;
|
||||
if (HasRequiredItems(itemToGather))
|
||||
continue;
|
||||
|
||||
public override ETaskResult Update() => ETaskResult.CreateNewTasks;
|
||||
|
||||
public IEnumerable<ITask> CreateExtraTasks()
|
||||
{
|
||||
EClassJob currentClassJob = (EClassJob)clientState.LocalPlayer!.ClassJob.RowId;
|
||||
if (!gatheringData.TryGetGatheringPointId(Task.GatheredItem.ItemId, currentClassJob,
|
||||
out GatheringPointId? gatheringPointId))
|
||||
throw new TaskException($"No gathering point found for item {Task.GatheredItem.ItemId}");
|
||||
|
||||
if (!gatheringPointRegistry.TryGetGatheringPoint(gatheringPointId, out GatheringRoot? gatheringRoot))
|
||||
throw new TaskException($"No path found for gathering point {gatheringPointId}");
|
||||
|
||||
if (HasRequiredItems(Task.GatheredItem))
|
||||
yield break;
|
||||
|
||||
using (var _ = logger.BeginScope("Gathering(inner)"))
|
||||
{
|
||||
QuestSequence gatheringSequence = new QuestSequence
|
||||
using (var _ = logger.BeginScope("Gathering(inner)"))
|
||||
{
|
||||
Sequence = 0,
|
||||
Steps = gatheringRoot.Steps
|
||||
};
|
||||
foreach (var gatheringStep in gatheringSequence.Steps)
|
||||
{
|
||||
foreach (var task in serviceProvider.GetRequiredService<TaskCreator>()
|
||||
.CreateTasks(Task.Quest, gatheringSequence, gatheringStep))
|
||||
if (task is WaitAtEnd.NextStep)
|
||||
yield return new SkipMarker();
|
||||
else
|
||||
yield return task;
|
||||
QuestSequence gatheringSequence = new QuestSequence
|
||||
{
|
||||
Sequence = 0,
|
||||
Steps = gatheringRoot.Steps
|
||||
};
|
||||
foreach (var gatheringStep in gatheringSequence.Steps)
|
||||
{
|
||||
foreach (var task in serviceProvider.GetRequiredService<TaskCreator>()
|
||||
.CreateTasks(quest, gatheringSequence, gatheringStep))
|
||||
if (task is WaitAtEnd.NextStep)
|
||||
yield return new SkipMarker();
|
||||
else
|
||||
yield return task;
|
||||
}
|
||||
}
|
||||
|
||||
ushort territoryId = gatheringRoot.Steps.Last().TerritoryId;
|
||||
yield return new WaitCondition.Task(() => clientState.TerritoryType == territoryId,
|
||||
$"Wait(territory: {territoryData.GetNameAndId(territoryId)})");
|
||||
|
||||
yield return new WaitCondition.Task(() => movementController.IsNavmeshReady,
|
||||
"Wait(navmesh ready)");
|
||||
|
||||
yield return new GatheringTask(gatheringPointId, itemToGather);
|
||||
yield return new WaitAtEnd.WaitDelay();
|
||||
}
|
||||
|
||||
ushort territoryId = gatheringRoot.Steps.Last().TerritoryId;
|
||||
yield return new WaitCondition.Task(() => clientState.TerritoryType == territoryId,
|
||||
$"Wait(territory: {territoryData.GetNameAndId(territoryId)})");
|
||||
|
||||
yield return new WaitCondition.Task(() => movementController.IsNavmeshReady,
|
||||
"Wait(navmesh ready)");
|
||||
|
||||
yield return new GatheringTask(gatheringPointId, Task.GatheredItem);
|
||||
yield return new WaitAtEnd.WaitDelay();
|
||||
}
|
||||
|
||||
private unsafe bool HasRequiredItems(GatheredItem itemToGather)
|
||||
|
@ -1,6 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Questionable.Model;
|
||||
|
||||
namespace Questionable.Controller.Steps;
|
||||
|
||||
@ -18,11 +16,6 @@ internal interface ITaskExecutor
|
||||
ETaskResult Update();
|
||||
}
|
||||
|
||||
internal interface IExtraTaskCreator : ITaskExecutor
|
||||
{
|
||||
IEnumerable<ITask> CreateExtraTasks();
|
||||
}
|
||||
|
||||
internal abstract class TaskExecutor<T> : ITaskExecutor
|
||||
where T : class, ITask
|
||||
{
|
||||
|
@ -18,11 +18,6 @@ internal sealed class TaskQueue
|
||||
_tasks.Add(task);
|
||||
}
|
||||
|
||||
public void EnqueueAll(IEnumerable<ITask> tasks)
|
||||
{
|
||||
_tasks.InsertRange(0, tasks);
|
||||
}
|
||||
|
||||
public bool TryDequeue([NotNullWhen(true)] out ITask? task)
|
||||
{
|
||||
task = _tasks.FirstOrDefault();
|
||||
|
@ -11,7 +11,7 @@ internal sealed class AetherCurrentData
|
||||
|
||||
public AetherCurrentData(IDataManager dataManager)
|
||||
{
|
||||
_overworldCurrents = dataManager.GetExcelSheet<AetherCurrentCompFlgSet>()
|
||||
_overworldCurrents = dataManager.GetExcelSheet<AetherCurrentCompFlgSet>()!
|
||||
.Where(x => x.RowId > 0)
|
||||
.Where(x => x.Territory.IsValid)
|
||||
.ToImmutableDictionary(
|
||||
|
@ -40,7 +40,7 @@ internal sealed class QuestData
|
||||
public QuestData(IDataManager dataManager)
|
||||
{
|
||||
Dictionary<uint, uint> questChapters =
|
||||
dataManager.GetExcelSheet<QuestChapter>()
|
||||
dataManager.GetExcelSheet<QuestChapter>()!
|
||||
.Where(x => x.RowId > 0 && x.Quest.RowId > 0)
|
||||
.ToDictionary(x => x.Quest.RowId, x => x.Redo.RowId);
|
||||
|
||||
|
33
Questionable/External/LifestreamIpc.cs
vendored
33
Questionable/External/LifestreamIpc.cs
vendored
@ -1,9 +1,5 @@
|
||||
using System.Collections.Generic;
|
||||
using Dalamud.Plugin;
|
||||
using Dalamud.Plugin;
|
||||
using Dalamud.Plugin.Ipc;
|
||||
using Dalamud.Plugin.Services;
|
||||
using Lumina.Excel.Sheets;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Questionable.Data;
|
||||
using Questionable.Model.Common;
|
||||
|
||||
@ -12,40 +8,25 @@ namespace Questionable.External;
|
||||
internal sealed class LifestreamIpc
|
||||
{
|
||||
private readonly AetheryteData _aetheryteData;
|
||||
private readonly IDataManager _dataManager;
|
||||
private readonly ILogger<LifestreamIpc> _logger;
|
||||
private readonly ICallGateSubscriber<string, bool> _aethernetTeleport;
|
||||
|
||||
public LifestreamIpc(IDalamudPluginInterface pluginInterface, AetheryteData aetheryteData, IDataManager dataManager, ILogger<LifestreamIpc> logger)
|
||||
public LifestreamIpc(IDalamudPluginInterface pluginInterface, AetheryteData aetheryteData)
|
||||
{
|
||||
_aetheryteData = aetheryteData;
|
||||
_dataManager = dataManager;
|
||||
_logger = logger;
|
||||
_aethernetTeleport = pluginInterface.GetIpcSubscriber<string, bool>("Lifestream.AethernetTeleport");
|
||||
}
|
||||
|
||||
public bool Teleport(EAetheryteLocation aetheryteLocation)
|
||||
{
|
||||
string? name = aetheryteLocation switch
|
||||
if (aetheryteLocation == EAetheryteLocation.IshgardFirmament)
|
||||
{
|
||||
EAetheryteLocation.IshgardFirmament => "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),
|
||||
};
|
||||
// TODO does this even work on non-EN clients?
|
||||
return _aethernetTeleport.InvokeFunc("Firmament");
|
||||
}
|
||||
|
||||
if (name == null)
|
||||
if (!_aetheryteData.AethernetNames.TryGetValue(aetheryteLocation, out string? name))
|
||||
return false;
|
||||
|
||||
_logger.LogInformation("Teleporting to '{Name}'", 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)
|
||||
.Select(x => (x.RowId, Command: x.TextCommand.Value.Command.ToString()))
|
||||
.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();
|
||||
}
|
||||
|
||||
|
@ -122,45 +122,29 @@ internal sealed unsafe class QuestFunctions
|
||||
// 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.
|
||||
List<(ElementId Quest, byte Sequence)> trackedQuests = [];
|
||||
for (int i = questManager->TrackedQuests.Length - 1; i >= 0; --i)
|
||||
{
|
||||
ElementId currentQuest;
|
||||
var trackedQuest = questManager->TrackedQuests[i];
|
||||
switch (trackedQuest.QuestType)
|
||||
{
|
||||
default:
|
||||
continue;
|
||||
|
||||
case 1: // normal quest
|
||||
currentQuest = new QuestId(questManager->NormalQuests[trackedQuest.Index].QuestId);
|
||||
if (_questRegistry.IsKnownQuest(currentQuest))
|
||||
trackedQuests.Add((currentQuest, QuestManager.GetQuestSequence(currentQuest.Value)));
|
||||
break;
|
||||
return (currentQuest, QuestManager.GetQuestSequence(currentQuest.Value));
|
||||
continue;
|
||||
|
||||
case 2: // leve
|
||||
currentQuest = new LeveId(questManager->LeveQuests[trackedQuest.Index].LeveId);
|
||||
if (_questRegistry.IsKnownQuest(currentQuest))
|
||||
trackedQuests.Add((currentQuest, questManager->GetLeveQuestById(currentQuest.Value)->Sequence));
|
||||
break;
|
||||
return (currentQuest, questManager->GetLeveQuestById(currentQuest.Value)->Sequence);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
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();
|
||||
if (priorityQuest != null)
|
||||
{
|
||||
@ -237,21 +221,6 @@ internal sealed unsafe class QuestFunctions
|
||||
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)
|
||||
{
|
||||
if (elementId is QuestId questId)
|
||||
@ -627,7 +596,7 @@ internal sealed unsafe class QuestFunctions
|
||||
|
||||
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;
|
||||
if (questId != 0)
|
||||
return IsQuestComplete(new QuestId(questId));
|
||||
@ -638,7 +607,7 @@ internal sealed unsafe class QuestFunctions
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
|
@ -15,7 +15,7 @@ internal sealed class SatisfactionSupplyInfo : IQuestInfo
|
||||
IssuerDataId = npc.Npc.RowId;
|
||||
Level = npc.LevelUnlock;
|
||||
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)))];
|
||||
}
|
||||
|
||||
|
@ -147,6 +147,7 @@ public sealed class QuestionablePlugin : IDalamudPlugin
|
||||
.AddTaskFactoryAndExecutor<StepDisabled.SkipRemainingTasks, StepDisabled.Factory,
|
||||
StepDisabled.SkipDisabledStepsExecutor>();
|
||||
serviceCollection.AddTaskFactory<EquipRecommended.BeforeDutyOrInstance>();
|
||||
serviceCollection.AddTaskFactoryAndExecutor<Gather.GatheringTask, Gather.Factory, Gather.StartGathering>();
|
||||
serviceCollection.AddTaskExecutor<Gather.SkipMarker, Gather.DoSkip>();
|
||||
serviceCollection
|
||||
.AddTaskFactoryAndExecutor<AetheryteShortcut.Task, AetheryteShortcut.Factory,
|
||||
@ -155,8 +156,6 @@ public sealed class QuestionablePlugin : IDalamudPlugin
|
||||
.AddTaskExecutor<AetheryteShortcut.MoveAwayFromAetheryte, AetheryteShortcut.MoveAwayFromAetheryteExecutor>();
|
||||
serviceCollection
|
||||
.AddTaskFactoryAndExecutor<SkipCondition.SkipTask, SkipCondition.Factory, SkipCondition.CheckSkip>();
|
||||
serviceCollection.AddTaskFactoryAndExecutor<Gather.GatheringTask, Gather.Factory, Gather.StartGathering>();
|
||||
serviceCollection.AddTaskExecutor<Gather.DelayedGatheringTask, Gather.DelayedGatheringExecutor>();
|
||||
serviceCollection
|
||||
.AddTaskFactoryAndExecutor<AethernetShortcut.Task, AethernetShortcut.Factory,
|
||||
AethernetShortcut.UseAethernetShortcut>();
|
||||
|
@ -108,9 +108,9 @@ internal sealed class GatheringJournalComponent
|
||||
.GroupBy(x => x.GatheringPointId)
|
||||
.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)
|
||||
.Select(x => new
|
||||
{
|
||||
@ -120,7 +120,7 @@ internal sealed class GatheringJournalComponent
|
||||
.Where(x => !string.IsNullOrEmpty(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 is < 653 or > 680) // exclude ishgard restoration phase 1
|
||||
.DistinctBy(x => x.GatheringPointBase.RowId)
|
||||
@ -128,7 +128,7 @@ internal sealed class GatheringJournalComponent
|
||||
{
|
||||
GatheringPointId = x.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,
|
||||
2 or 3 => EClassJob.Botanist,
|
||||
@ -159,7 +159,7 @@ internal sealed class GatheringJournalComponent
|
||||
_gatheringPointRegistry.TryGetGatheringPoint(x.Point.Id, out GatheringRoot? gatheringRoot))
|
||||
{
|
||||
// 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
|
||||
{
|
||||
Expansion = (EExpansionVersion)territoryType.ExVersion.RowId,
|
||||
|
@ -13,9 +13,9 @@
|
||||
},
|
||||
"DalamudPackager": {
|
||||
"type": "Direct",
|
||||
"requested": "[11.0.0, )",
|
||||
"resolved": "11.0.0",
|
||||
"contentHash": "bjT7XUlhIJSmsE/O76b7weUX+evvGQctbQB8aKXt94o+oPWxHpCepxAGMs7Thow3AzCyqWs7cOpp9/2wcgRRQA=="
|
||||
"requested": "[2.1.13, )",
|
||||
"resolved": "2.1.13",
|
||||
"contentHash": "rMN1omGe8536f4xLMvx9NwfvpAc9YFFfeXJ1t4P4PE6Gu8WCIoFliR1sh07hM+bfODmesk/dvMbji7vNI+B/pQ=="
|
||||
},
|
||||
"DotNet.ReproducibleBuilds": {
|
||||
"type": "Direct",
|
||||
@ -174,13 +174,13 @@
|
||||
"gatheringpaths": {
|
||||
"type": "Project",
|
||||
"dependencies": {
|
||||
"Questionable.Model": "[4.0.0, )"
|
||||
"Questionable.Model": "[3.12.0, )"
|
||||
}
|
||||
},
|
||||
"llib": {
|
||||
"type": "Project",
|
||||
"dependencies": {
|
||||
"DalamudPackager": "[11.0.0, )"
|
||||
"DalamudPackager": "[2.1.13, )"
|
||||
}
|
||||
},
|
||||
"notificationmasterapi": {
|
||||
@ -195,7 +195,7 @@
|
||||
"questpaths": {
|
||||
"type": "Project",
|
||||
"dependencies": {
|
||||
"Questionable.Model": "[4.0.0, )"
|
||||
"Questionable.Model": "[3.12.0, )"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user