diff --git a/Questionable.sln.DotSettings b/Questionable.sln.DotSettings
new file mode 100644
index 000000000..381b58684
--- /dev/null
+++ b/Questionable.sln.DotSettings
@@ -0,0 +1,2 @@
+
+ True
\ No newline at end of file
diff --git a/Questionable/Controller/QuestController.cs b/Questionable/Controller/QuestController.cs
index 50698b423..001ac1804 100644
--- a/Questionable/Controller/QuestController.cs
+++ b/Questionable/Controller/QuestController.cs
@@ -264,6 +264,13 @@ internal sealed class QuestController
return;
Debug.Assert(CurrentQuest != null, nameof(CurrentQuest) + " != null");
+ if (step.Disabled)
+ {
+ _pluginLog.Information("Skipping step, as it is disabled");
+ IncreaseStepCount();
+ return;
+ }
+
if (!CurrentQuest.StepProgress.AetheryteShortcutUsed && step.AetheryteShortcut != null)
{
bool skipTeleport = false;
@@ -308,6 +315,13 @@ internal sealed class QuestController
}
}
+ if (step.SkipIf.Contains(ESkipCondition.FlyingUnlocked) && _gameFunctions.IsFlyingUnlocked(step.TerritoryId))
+ {
+ _pluginLog.Information("Skipping step, as flying is unlocked");
+ IncreaseStepCount();
+ return;
+ }
+
if (!CurrentQuest.StepProgress.AethernetShortcutUsed)
{
if (step.AethernetShortcut != null &&
@@ -357,7 +371,8 @@ internal sealed class QuestController
if (step.Mount == true && !_gameFunctions.HasStatusPreventingSprintOrMount())
{
- if (!_condition[ConditionFlag.Mounted] && _territoryData.CanUseMount(_clientState.TerritoryType))
+ if (!_condition[ConditionFlag.Mounted] && !_condition[ConditionFlag.InCombat] &&
+ _territoryData.CanUseMount(_clientState.TerritoryType))
{
if (ActionManager.Instance()->GetActionStatus(ActionType.Mount, 71) == 0)
ActionManager.Instance()->UseAction(ActionType.Mount, 71);
@@ -376,7 +391,7 @@ internal sealed class QuestController
if (!step.DisableNavmesh)
{
if (step.Mount != false && actualDistance > 30f && !_condition[ConditionFlag.Mounted] &&
- _territoryData.CanUseMount(_clientState.TerritoryType) &&
+ !_condition[ConditionFlag.InCombat] && _territoryData.CanUseMount(_clientState.TerritoryType) &&
!_gameFunctions.HasStatusPreventingSprintOrMount())
{
if (ActionManager.Instance()->GetActionStatus(ActionType.Mount, 71) == 0)
diff --git a/Questionable/GameFunctions.cs b/Questionable/GameFunctions.cs
index 31670dc96..eb96ce8dd 100644
--- a/Questionable/GameFunctions.cs
+++ b/Questionable/GameFunctions.cs
@@ -393,7 +393,7 @@ internal sealed unsafe class GameFunctions
{
var battleChara = (BattleChara*)gameObject;
StatusManager* statusManager = battleChara->GetStatusManager;
- return statusManager->HasStatus(565) || statusManager->HasStatus(404);
+ return statusManager->HasStatus(565) || statusManager->HasStatus(404) || statusManager->HasStatus(2730);
}
return false;
diff --git a/Questionable/Model/V1/AethernetShortcut.cs b/Questionable/Model/V1/AethernetShortcut.cs
index f605809e7..40514b587 100644
--- a/Questionable/Model/V1/AethernetShortcut.cs
+++ b/Questionable/Model/V1/AethernetShortcut.cs
@@ -1,6 +1,10 @@
-namespace Questionable.Model.V1;
+using System.Text.Json.Serialization;
+using Questionable.Model.V1.Converter;
-public class AethernetShortcut
+namespace Questionable.Model.V1;
+
+[JsonConverter(typeof(AethernetShortcutConverter))]
+public sealed class AethernetShortcut
{
public EAetheryteLocation From { get; set; }
public EAetheryteLocation To { get; set; }
diff --git a/Questionable/Model/V1/Converter/AetheryteConverter.cs b/Questionable/Model/V1/Converter/AetheryteConverter.cs
index 6c8eb384f..55a30e5e0 100644
--- a/Questionable/Model/V1/Converter/AetheryteConverter.cs
+++ b/Questionable/Model/V1/Converter/AetheryteConverter.cs
@@ -1,14 +1,10 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text.Json;
-using System.Text.Json.Serialization;
+using System.Collections.Generic;
namespace Questionable.Model.V1.Converter;
-public sealed class AetheryteConverter : JsonConverter
+public sealed class AetheryteConverter() : EnumConverter(Values)
{
- private static readonly Dictionary EnumToString = new()
+ private static readonly Dictionary Values = new()
{
{ EAetheryteLocation.Limsa, "Limsa Lominsa" },
{ EAetheryteLocation.Gridania, "Gridania" },
@@ -67,29 +63,7 @@ public sealed class AetheryteConverter : JsonConverter
{ EAetheryteLocation.ElpisTwelveWonders, "Elpis - Twelve Wonders" },
{ EAetheryteLocation.ElpisPoietenOikos, "Elpis - Poieten Oikos" },
{ EAetheryteLocation.UltimaThuleReahTahra, "Ultima Thule - Reah Tahra" },
- { EAetheryteLocation.UltimaThuleAbodeOfTheEa, "Ultima Thula - Abode of the Ea" },
+ { EAetheryteLocation.UltimaThuleAbodeOfTheEa, "Ultima Thule - Abode of the Ea" },
{ EAetheryteLocation.UltimaThuleBaseOmicron, "Ultima Thule - Base Omicron" }
};
-
- private static readonly Dictionary StringToEnum =
- EnumToString.ToDictionary(x => x.Value, x => x.Key);
-
- public override EAetheryteLocation Read(ref Utf8JsonReader reader, Type typeToConvert,
- JsonSerializerOptions options)
- {
- if (reader.TokenType != JsonTokenType.String)
- throw new JsonException();
-
- string? str = reader.GetString();
- if (str == null)
- throw new JsonException();
-
- return StringToEnum.TryGetValue(str, out EAetheryteLocation value) ? value : throw new JsonException();
- }
-
- public override void Write(Utf8JsonWriter writer, EAetheryteLocation value, JsonSerializerOptions options)
- {
- ArgumentNullException.ThrowIfNull(writer);
- writer.WriteStringValue(EnumToString[value]);
- }
}
diff --git a/Questionable/Model/V1/Converter/EmoteConverter.cs b/Questionable/Model/V1/Converter/EmoteConverter.cs
index ce3010493..d903e09aa 100644
--- a/Questionable/Model/V1/Converter/EmoteConverter.cs
+++ b/Questionable/Model/V1/Converter/EmoteConverter.cs
@@ -1,40 +1,16 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text.Json;
-using System.Text.Json.Serialization;
+using System.Collections.Generic;
namespace Questionable.Model.V1.Converter;
-public class EmoteConverter : JsonConverter
+public sealed class EmoteConverter() : EnumConverter(Values)
{
- private static readonly Dictionary EnumToString = new()
+ private static readonly Dictionary Values = new()
{
{ EEmote.Stretch, "stretch" },
{ EEmote.Wave, "wave" },
{ EEmote.Rally, "rally" },
{ EEmote.Deny, "deny" },
+ { EEmote.Pray, "pray" },
};
- private static readonly Dictionary StringToEnum =
- EnumToString.ToDictionary(x => x.Value, x => x.Key);
-
- public override EEmote Read(ref Utf8JsonReader reader, Type typeToConvert,
- JsonSerializerOptions options)
- {
- if (reader.TokenType != JsonTokenType.String)
- throw new JsonException();
-
- string? str = reader.GetString();
- if (str == null)
- throw new JsonException();
-
- return StringToEnum.TryGetValue(str, out EEmote value) ? value : throw new JsonException();
- }
-
- public override void Write(Utf8JsonWriter writer, EEmote value, JsonSerializerOptions options)
- {
- ArgumentNullException.ThrowIfNull(writer);
- writer.WriteStringValue(EnumToString[value]);
- }
}
diff --git a/Questionable/Model/V1/Converter/EnemySpawnTypeConverter.cs b/Questionable/Model/V1/Converter/EnemySpawnTypeConverter.cs
index 29578b685..e78419622 100644
--- a/Questionable/Model/V1/Converter/EnemySpawnTypeConverter.cs
+++ b/Questionable/Model/V1/Converter/EnemySpawnTypeConverter.cs
@@ -1,38 +1,12 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text.Json;
-using System.Text.Json.Serialization;
+using System.Collections.Generic;
namespace Questionable.Model.V1.Converter;
-public class EnemySpawnTypeConverter : JsonConverter
+public sealed class EnemySpawnTypeConverter() : EnumConverter(Values)
{
- private static readonly Dictionary EnumToString = new()
+ private static readonly Dictionary Values = new()
{
{ EEnemySpawnType.AfterInteraction, "AfterInteraction" },
{ EEnemySpawnType.AutoOnEnterArea, "AutoOnEnterArea" },
};
-
- private static readonly Dictionary StringToEnum =
- EnumToString.ToDictionary(x => x.Value, x => x.Key);
-
- public override EEnemySpawnType Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
- {
- if (reader.TokenType != JsonTokenType.String)
- throw new JsonException();
-
- string? str = reader.GetString();
- if (str == null)
- throw new JsonException();
-
- return StringToEnum.TryGetValue(str, out EEnemySpawnType value) ? value : throw new JsonException();
- }
-
- public override void Write(Utf8JsonWriter writer, EEnemySpawnType value, JsonSerializerOptions options)
- {
- ArgumentNullException.ThrowIfNull(writer);
- writer.WriteStringValue(EnumToString[value]);
- }
-
}
diff --git a/Questionable/Model/V1/Converter/EnumConverter.cs b/Questionable/Model/V1/Converter/EnumConverter.cs
new file mode 100644
index 000000000..cf70131be
--- /dev/null
+++ b/Questionable/Model/V1/Converter/EnumConverter.cs
@@ -0,0 +1,43 @@
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Linq;
+using System.Text.Json;
+using System.Text.Json.Serialization;
+
+namespace Questionable.Model.V1.Converter;
+
+public abstract class EnumConverter : JsonConverter
+ where T : Enum
+{
+ private readonly ReadOnlyDictionary _enumToString;
+ private readonly ReadOnlyDictionary _stringToEnum;
+
+ protected EnumConverter(IReadOnlyDictionary values)
+ {
+ _enumToString = values is IDictionary dict
+ ? new ReadOnlyDictionary(dict)
+ : values.ToDictionary(x => x.Key, x => x.Value).AsReadOnly();
+ _stringToEnum = _enumToString.ToDictionary(x => x.Value, x => x.Key)
+ .AsReadOnly();
+ }
+
+ public override T? Read(ref Utf8JsonReader reader, Type typeToConvert,
+ JsonSerializerOptions options)
+ {
+ if (reader.TokenType != JsonTokenType.String)
+ throw new JsonException();
+
+ string? str = reader.GetString();
+ if (str == null)
+ throw new JsonException();
+
+ return _stringToEnum.TryGetValue(str, out T? value) ? value : throw new JsonException();
+ }
+
+ public override void Write(Utf8JsonWriter writer, T value, JsonSerializerOptions options)
+ {
+ ArgumentNullException.ThrowIfNull(writer);
+ writer.WriteStringValue(_enumToString[value]);
+ }
+}
diff --git a/Questionable/Model/V1/Converter/InteractionTypeConverter.cs b/Questionable/Model/V1/Converter/InteractionTypeConverter.cs
index e6786e3c3..0778b86b3 100644
--- a/Questionable/Model/V1/Converter/InteractionTypeConverter.cs
+++ b/Questionable/Model/V1/Converter/InteractionTypeConverter.cs
@@ -1,14 +1,10 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text.Json;
-using System.Text.Json.Serialization;
+using System.Collections.Generic;
namespace Questionable.Model.V1.Converter;
-public sealed class InteractionTypeConverter : JsonConverter
+public sealed class InteractionTypeConverter() : EnumConverter(Values)
{
- private static readonly Dictionary EnumToString = new()
+ private static readonly Dictionary Values = new()
{
{ EInteractionType.Interact, "Interact" },
{ EInteractionType.WalkTo, "WalkTo" },
@@ -22,25 +18,4 @@ public sealed class InteractionTypeConverter : JsonConverter
{ EInteractionType.WaitForObjectAtPosition, "WaitForNpcAtPosition" },
{ EInteractionType.ManualAction, "ManualAction" }
};
-
- private static readonly Dictionary StringToEnum =
- EnumToString.ToDictionary(x => x.Value, x => x.Key);
-
- public override EInteractionType Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
- {
- if (reader.TokenType != JsonTokenType.String)
- throw new JsonException();
-
- string? str = reader.GetString();
- if (str == null)
- throw new JsonException();
-
- return StringToEnum.TryGetValue(str, out EInteractionType value) ? value : throw new JsonException();
- }
-
- public override void Write(Utf8JsonWriter writer, EInteractionType value, JsonSerializerOptions options)
- {
- ArgumentNullException.ThrowIfNull(writer);
- writer.WriteStringValue(EnumToString[value]);
- }
}
diff --git a/Questionable/Model/V1/Converter/SkipConditionConverter.cs b/Questionable/Model/V1/Converter/SkipConditionConverter.cs
new file mode 100644
index 000000000..0d98e515a
--- /dev/null
+++ b/Questionable/Model/V1/Converter/SkipConditionConverter.cs
@@ -0,0 +1,11 @@
+using System.Collections.Generic;
+
+namespace Questionable.Model.V1.Converter;
+
+public sealed class SkipConditionConverter() : EnumConverter(Values)
+{
+ private static readonly Dictionary Values = new()
+ {
+ { ESkipCondition.FlyingUnlocked, "FlyingUnlocked" },
+ };
+}
diff --git a/Questionable/Model/V1/EAetheryteLocation.cs b/Questionable/Model/V1/EAetheryteLocation.cs
index d7e2c6b4e..a89e980f4 100644
--- a/Questionable/Model/V1/EAetheryteLocation.cs
+++ b/Questionable/Model/V1/EAetheryteLocation.cs
@@ -1,5 +1,9 @@
-namespace Questionable.Model.V1;
+using System.Text.Json.Serialization;
+using Questionable.Model.V1.Converter;
+namespace Questionable.Model.V1;
+
+[JsonConverter(typeof(AetheryteConverter))]
public enum EAetheryteLocation
{
None = 0,
diff --git a/Questionable/Model/V1/EEmote.cs b/Questionable/Model/V1/EEmote.cs
index 0d8f4a002..dcdc11b1b 100644
--- a/Questionable/Model/V1/EEmote.cs
+++ b/Questionable/Model/V1/EEmote.cs
@@ -1,5 +1,9 @@
-namespace Questionable.Model.V1;
+using System.Text.Json.Serialization;
+using Questionable.Model.V1.Converter;
+namespace Questionable.Model.V1;
+
+[JsonConverter(typeof(EmoteConverter))]
public enum EEmote
{
None = 0,
@@ -8,4 +12,5 @@ public enum EEmote
Wave = 16,
Rally = 34,
Deny = 25,
+ Pray = 58,
}
diff --git a/Questionable/Model/V1/EEnemySpawnType.cs b/Questionable/Model/V1/EEnemySpawnType.cs
index c2c968d5d..50f82b45d 100644
--- a/Questionable/Model/V1/EEnemySpawnType.cs
+++ b/Questionable/Model/V1/EEnemySpawnType.cs
@@ -1,5 +1,9 @@
-namespace Questionable.Model.V1;
+using System.Text.Json.Serialization;
+using Questionable.Model.V1.Converter;
+namespace Questionable.Model.V1;
+
+[JsonConverter(typeof(EnemySpawnTypeConverter))]
public enum EEnemySpawnType
{
None = 0,
diff --git a/Questionable/Model/V1/EInteractionType.cs b/Questionable/Model/V1/EInteractionType.cs
index 9c9c8d386..5e03db436 100644
--- a/Questionable/Model/V1/EInteractionType.cs
+++ b/Questionable/Model/V1/EInteractionType.cs
@@ -1,5 +1,9 @@
-namespace Questionable.Model.V1;
+using System.Text.Json.Serialization;
+using Questionable.Model.V1.Converter;
+namespace Questionable.Model.V1;
+
+[JsonConverter(typeof(InteractionTypeConverter))]
public enum EInteractionType
{
Interact,
diff --git a/Questionable/Model/V1/ESkipCondition.cs b/Questionable/Model/V1/ESkipCondition.cs
new file mode 100644
index 000000000..42b67ef54
--- /dev/null
+++ b/Questionable/Model/V1/ESkipCondition.cs
@@ -0,0 +1,11 @@
+using System.Text.Json.Serialization;
+using Questionable.Model.V1.Converter;
+
+namespace Questionable.Model.V1;
+
+[JsonConverter(typeof(SkipConditionConverter))]
+public enum ESkipCondition
+{
+ None,
+ FlyingUnlocked,
+}
diff --git a/Questionable/Model/V1/QuestStep.cs b/Questionable/Model/V1/QuestStep.cs
index 404e6910c..58a84226e 100644
--- a/Questionable/Model/V1/QuestStep.cs
+++ b/Questionable/Model/V1/QuestStep.cs
@@ -7,7 +7,6 @@ namespace Questionable.Model.V1;
public class QuestStep
{
- [JsonConverter(typeof(InteractionTypeConverter))]
public EInteractionType InteractionType { get; set; }
public uint? DataId { get; set; }
@@ -25,22 +24,20 @@ public class QuestStep
public bool Fly { get; set; }
public string? Comment { get; set; }
- [JsonConverter(typeof(AetheryteConverter))]
public EAetheryteLocation? AetheryteShortcut { get; set; }
- [JsonConverter(typeof(AethernetShortcutConverter))]
public AethernetShortcut? AethernetShortcut { get; set; }
public uint? AetherCurrentId { get; set; }
public uint? ItemId { get; set; }
public bool? GroundTarget { get; set; }
- [JsonConverter(typeof(EmoteConverter))]
public EEmote? Emote { get; set; }
- public string ChatMessage { get; set; }
+ public string? ChatMessage { get; set; }
- [JsonConverter(typeof(EnemySpawnTypeConverter))]
public EEnemySpawnType? EnemySpawnType { get; set; }
- public IList? KillEnemyDataIds { get; set; }
+ public IList KillEnemyDataIds { get; set; } = new List();
+
+ public IList SkipIf { get; set; } = new List();
}
diff --git a/Questionable/QuestPaths/Endwalker/AetherCurrents/Labyrinthos/4320_Gleaners Wish.json b/Questionable/QuestPaths/Endwalker/AetherCurrents/Labyrinthos/4320_Gleaners Wish.json
new file mode 100644
index 000000000..ae137fd2c
--- /dev/null
+++ b/Questionable/QuestPaths/Endwalker/AetherCurrents/Labyrinthos/4320_Gleaners Wish.json
@@ -0,0 +1,68 @@
+{
+ "Version": 1,
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1041313,
+ "Position": {
+ "X": 89.28052,
+ "Y": -17.530382,
+ "Z": -74.906555
+ },
+ "TerritoryId": 956,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1041314,
+ "Position": {
+ "X": 78.3855,
+ "Y": -29.79994,
+ "Z": 159.5636
+ },
+ "TerritoryId": 956,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "DataId": 2012494,
+ "Position": {
+ "X": 78.96533,
+ "Y": -29.098999,
+ "Z": 161.02844
+ },
+ "StopDistance": 5,
+ "TerritoryId": 956,
+ "InteractionType": "Emote",
+ "Emote": "pray"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1041313,
+ "Position": {
+ "X": 89.28052,
+ "Y": -17.530382,
+ "Z": -74.906555
+ },
+ "TerritoryId": 956,
+ "InteractionType": "Interact"
+ }
+ ]
+ }
+ ]
+}
diff --git a/Questionable/QuestPaths/Endwalker/AetherCurrents/Labyrinthos/4329_Let the Good Times Troll.json b/Questionable/QuestPaths/Endwalker/AetherCurrents/Labyrinthos/4329_Let the Good Times Troll.json
new file mode 100644
index 000000000..bb4390ea8
--- /dev/null
+++ b/Questionable/QuestPaths/Endwalker/AetherCurrents/Labyrinthos/4329_Let the Good Times Troll.json
@@ -0,0 +1,71 @@
+{
+ "Version": 1,
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1041129,
+ "Position": {
+ "X": -23.575256,
+ "Y": -31.53021,
+ "Z": 1.8463135
+ },
+ "TerritoryId": 956,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "Position": {
+ "X": 262.07907,
+ "Y": -18.527845,
+ "Z": 183.61182
+ },
+ "StopDistance": 1,
+ "TerritoryId": 956,
+ "InteractionType": "Combat",
+ "EnemySpawnType": "AutoOnEnterArea",
+ "KillEnemyDataIds": [
+ 14123
+ ]
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "DataId": 1041128,
+ "Position": {
+ "X": 263.1112,
+ "Y": -18.597479,
+ "Z": 185.99219
+ },
+ "StopDistance": 5,
+ "TerritoryId": 956,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1041129,
+ "Position": {
+ "X": -23.575256,
+ "Y": -31.53021,
+ "Z": 1.8463135
+ },
+ "TerritoryId": 956,
+ "InteractionType": "Interact"
+ }
+ ]
+ }
+ ]
+}
diff --git a/Questionable/QuestPaths/Endwalker/AetherCurrents/Labyrinthos/4480_Lost Little Troll.json b/Questionable/QuestPaths/Endwalker/AetherCurrents/Labyrinthos/4480_Lost Little Troll.json
new file mode 100644
index 000000000..ff4153da3
--- /dev/null
+++ b/Questionable/QuestPaths/Endwalker/AetherCurrents/Labyrinthos/4480_Lost Little Troll.json
@@ -0,0 +1,118 @@
+{
+ "Version": 1,
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1041667,
+ "Position": {
+ "X": 443.96118,
+ "Y": 65.162,
+ "Z": -105.4552
+ },
+ "TerritoryId": 956,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 2012725,
+ "Position": {
+ "X": 693.1715,
+ "Y": 99.01575,
+ "Z": 123.52173
+ },
+ "TerritoryId": 956,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "DataId": 2012726,
+ "Position": {
+ "X": 806.79016,
+ "Y": 154.10083,
+ "Z": -149.64526
+ },
+ "TerritoryId": 956,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 3,
+ "Steps": [
+ {
+ "DataId": 1041681,
+ "Position": {
+ "X": 436.69788,
+ "Y": 166.19273,
+ "Z": -430.4723
+ },
+ "TerritoryId": 956,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Labyrinthos - Archeion"
+ }
+ ]
+ },
+ {
+ "Sequence": 4,
+ "Steps": [
+ {
+ "DataId": 1041668,
+ "Position": {
+ "X": 394.12524,
+ "Y": 173.82095,
+ "Z": -646.75366
+ },
+ "TerritoryId": 956,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 5,
+ "Steps": [
+ {
+ "DataId": 1041670,
+ "Position": {
+ "X": 285.23682,
+ "Y": 185.65448,
+ "Z": -729.67114
+ },
+ "StopDistance": 1,
+ "TerritoryId": 956,
+ "InteractionType": "Combat",
+ "EnemySpawnType": "AfterInteraction",
+ "KillEnemyDataIds": [
+ 14069
+ ]
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1041670,
+ "Position": {
+ "X": 285.23682,
+ "Y": 185.65448,
+ "Z": -729.67114
+ },
+ "StopDistance": 5,
+ "TerritoryId": 956,
+ "InteractionType": "Interact"
+ }
+ ]
+ }
+ ]
+}
diff --git a/Questionable/QuestPaths/Endwalker/AetherCurrents/Labyrinthos/4484_The Lad in Labyrinthos.json b/Questionable/QuestPaths/Endwalker/AetherCurrents/Labyrinthos/4484_The Lad in Labyrinthos.json
new file mode 100644
index 000000000..84b3ed642
--- /dev/null
+++ b/Questionable/QuestPaths/Endwalker/AetherCurrents/Labyrinthos/4484_The Lad in Labyrinthos.json
@@ -0,0 +1,51 @@
+{
+ "Version": 1,
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1041683,
+ "Position": {
+ "X": -29.984009,
+ "Y": -31.53043,
+ "Z": -23.758362
+ },
+ "TerritoryId": 956,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1041684,
+ "Position": {
+ "X": 50.43103,
+ "Y": -29.530062,
+ "Z": 27.115234
+ },
+ "TerritoryId": 956,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1041685,
+ "Position": {
+ "X": 154.89429,
+ "Y": -17.530376,
+ "Z": -66.2395
+ },
+ "TerritoryId": 956,
+ "InteractionType": "Interact"
+ }
+ ]
+ }
+ ]
+}
diff --git a/Questionable/QuestPaths/Endwalker/AetherCurrents/Mare Lamentorum/4240_True Carrot Crimes.json b/Questionable/QuestPaths/Endwalker/AetherCurrents/Mare Lamentorum/4240_True Carrot Crimes.json
new file mode 100644
index 000000000..3b475c42c
--- /dev/null
+++ b/Questionable/QuestPaths/Endwalker/AetherCurrents/Mare Lamentorum/4240_True Carrot Crimes.json
@@ -0,0 +1,77 @@
+{
+ "Version": 1,
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1037867,
+ "Position": {
+ "X": -301.62512,
+ "Y": -144.00002,
+ "Z": -491.14215
+ },
+ "TerritoryId": 959,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1041132,
+ "Position": {
+ "X": -558.1293,
+ "Y": -168,
+ "Z": -475.3338
+ },
+ "TerritoryId": 959,
+ "InteractionType": "Combat",
+ "EnemySpawnType": "AfterInteraction",
+ "KillEnemyDataIds": [
+ 14053
+ ]
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "Position": {
+ "X": -719.5691,
+ "Y": -152.90369,
+ "Z": -807.82135
+ },
+ "TerritoryId": 959,
+ "InteractionType": "ManualAction",
+ "Comment": "Navmesh can't jump (TODO this is super out of the way)"
+ },
+ {
+ "DataId": 2012018,
+ "Position": {
+ "X": -733.63855,
+ "Y": -139.6659,
+ "Z": -733.30286
+ },
+ "TerritoryId": 959,
+ "InteractionType": "AttuneAetherCurrent",
+ "AetherCurrentId": 2818367
+ },
+ {
+ "DataId": 1037867,
+ "Position": {
+ "X": -301.62512,
+ "Y": -144.00002,
+ "Z": -491.14215
+ },
+ "TerritoryId": 959,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Mare Lamentorum - Bestways Burrow"
+ }
+ ]
+ }
+ ]
+}
diff --git a/Questionable/QuestPaths/Endwalker/AetherCurrents/Mare Lamentorum/4241_Carrots Its Whats for Dinner.json b/Questionable/QuestPaths/Endwalker/AetherCurrents/Mare Lamentorum/4241_Carrots Its Whats for Dinner.json
new file mode 100644
index 000000000..1d647dd68
--- /dev/null
+++ b/Questionable/QuestPaths/Endwalker/AetherCurrents/Mare Lamentorum/4241_Carrots Its Whats for Dinner.json
@@ -0,0 +1,98 @@
+{
+ "Version": 1,
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1039520,
+ "Position": {
+ "X": -287.8615,
+ "Y": -143.50005,
+ "Z": -520.28687
+ },
+ "TerritoryId": 959,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "Position": {
+ "X": -345.7338,
+ "Y": -161.8501,
+ "Z": -646.97064
+ },
+ "TerritoryId": 959,
+ "InteractionType": "ManualAction",
+ "Comment": "Navmesh can't jump"
+ },
+ {
+ "DataId": 1041789,
+ "StopDistance": 3,
+ "TerritoryId": 959,
+ "InteractionType": "Say",
+ "ChatMessage": "carrot of happiness"
+ },
+ {
+ "DataId": 1041790,
+ "Position": {
+ "X": -482.01727,
+ "Y": -167.50002,
+ "Z": -545.6169
+ },
+ "StopDistance": 3,
+ "TerritoryId": 959,
+ "InteractionType": "Say",
+ "ChatMessage": "carrot of happiness",
+ "$.1": "QuestVariables if done after [1]: 2 0 0 0 0 192"
+ },
+ {
+ "Position": {
+ "X": -438.33246,
+ "Y": -168.00002,
+ "Z": -420.43494
+ },
+ "TerritoryId": 959,
+ "InteractionType": "ManualAction",
+ "Comment": "Navmesh can't jump"
+ },
+ {
+ "DataId": 1041791,
+ "StopDistance": 3,
+ "TerritoryId": 959,
+ "InteractionType": "Say",
+ "ChatMessage": "carrot of happiness"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "Position": {
+ "X": -376.5167,
+ "Y": -168,
+ "Z": -432.03497
+ },
+ "TerritoryId": 959,
+ "InteractionType": "WalkTo",
+ "DisableNavmesh": true
+ },
+ {
+ "DataId": 1039520,
+ "Position": {
+ "X": -287.8615,
+ "Y": -143.50005,
+ "Z": -520.28687
+ },
+ "TerritoryId": 959,
+ "InteractionType": "Interact"
+ }
+ ]
+ }
+ ]
+}
diff --git a/Questionable/QuestPaths/Endwalker/AetherCurrents/Mare Lamentorum/4253_Alluring Allag.json b/Questionable/QuestPaths/Endwalker/AetherCurrents/Mare Lamentorum/4253_Alluring Allag.json
new file mode 100644
index 000000000..0bc968ef6
--- /dev/null
+++ b/Questionable/QuestPaths/Endwalker/AetherCurrents/Mare Lamentorum/4253_Alluring Allag.json
@@ -0,0 +1,153 @@
+{
+ "Version": 1,
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1041123,
+ "Position": {
+ "X": -81.864685,
+ "Y": -132.74333,
+ "Z": -521.6602
+ },
+ "TerritoryId": 959,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 2012015,
+ "Position": {
+ "X": 591.3633,
+ "Y": 149.33997,
+ "Z": 114.91565
+ },
+ "StopDistance": 4,
+ "TerritoryId": 959,
+ "InteractionType": "AttuneAetherCurrent",
+ "AetherCurrentId": 2818364,
+ "Comment": "TODO Unsure if this can be reached via navmesh directly from Bestways Burrows"
+ },
+ {
+ "DataId": 1041127,
+ "Position": {
+ "X": 537.3159,
+ "Y": 132.40395,
+ "Z": 233.81396
+ },
+ "TerritoryId": 959,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "DataId": 2012338,
+ "Position": {
+ "X": 700.19055,
+ "Y": 135.21008,
+ "Z": 229.48035
+ },
+ "TerritoryId": 959,
+ "InteractionType": "Interact",
+ "$.1": "QuestVariables if done first: 17 0 0 0 0 32"
+ },
+ {
+ "DataId": 1041125,
+ "Position": {
+ "X": 735.5,
+ "Y": 151.08012,
+ "Z": 189.01343
+ },
+ "TerritoryId": 959,
+ "InteractionType": "Combat",
+ "EnemySpawnType": "AfterInteraction",
+ "KillEnemyDataIds": [
+ 14050
+ ],
+ "$.1": "QuestVariables if done after [1]: 33 1 0 0 0 160"
+ },
+ {
+ "DataId": 1041124,
+ "Position": {
+ "X": 663.6301,
+ "Y": 128.48961,
+ "Z": 188.18945
+ },
+ "TerritoryId": 959,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 3,
+ "Steps": [
+ {
+ "DataId": 1041127,
+ "Position": {
+ "X": 537.3159,
+ "Y": 132.40395,
+ "Z": 233.81396
+ },
+ "StopDistance": 1,
+ "TerritoryId": 959,
+ "InteractionType": "Combat",
+ "EnemySpawnType": "AutoOnEnterArea",
+ "KillEnemyDataIds": [
+ 14049
+ ]
+ }
+ ]
+ },
+ {
+ "Sequence": 4,
+ "Steps": [
+ {
+ "DataId": 1041127,
+ "Position": {
+ "X": 537.3159,
+ "Y": 132.40395,
+ "Z": 233.81396
+ },
+ "StopDistance": 5,
+ "TerritoryId": 959,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 2012016,
+ "Position": {
+ "X": 388.3573,
+ "Y": 99.90076,
+ "Z": 306.05017
+ },
+ "TerritoryId": 959,
+ "InteractionType": "AttuneAetherCurrent",
+ "AetherCurrentId": 2818365
+ },
+ {
+ "DataId": 1041123,
+ "Position": {
+ "X": -81.864685,
+ "Y": -132.74333,
+ "Z": -521.6602
+ },
+ "TerritoryId": 959,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Mare Lamentorum - Bestways Burrow"
+ }
+ ]
+ }
+ ]
+}
diff --git a/Questionable/QuestPaths/Endwalker/AetherCurrents/Mare Lamentorum/4516_Name That Way.json b/Questionable/QuestPaths/Endwalker/AetherCurrents/Mare Lamentorum/4516_Name That Way.json
new file mode 100644
index 000000000..38d7f4014
--- /dev/null
+++ b/Questionable/QuestPaths/Endwalker/AetherCurrents/Mare Lamentorum/4516_Name That Way.json
@@ -0,0 +1,93 @@
+{
+ "Version": 1,
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1041555,
+ "Position": {
+ "X": 26.443848,
+ "Y": -129.20917,
+ "Z": -536.9497
+ },
+ "TerritoryId": 959,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1041556,
+ "Position": {
+ "X": 113.14563,
+ "Y": -133.07352,
+ "Z": -465.17133
+ },
+ "TerritoryId": 959,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "DataId": 1041745,
+ "Position": {
+ "X": 66.23938,
+ "Y": -133.00002,
+ "Z": -432.8222
+ },
+ "TerritoryId": 959,
+ "InteractionType": "Interact",
+ "Comment": "Cheerful Loporrit",
+ "$.0": "[1]",
+ "$.1": "QuestVariables if done first: 1 0 0 0 0 64"
+ },
+ {
+ "DataId": 1041746,
+ "Position": {
+ "X": -85.83203,
+ "Y": -133.0356,
+ "Z": -507.1336
+ },
+ "TerritoryId": 959,
+ "InteractionType": "Interact",
+ "Comment": "Stern Loporrit",
+ "$.0": "[2]",
+ "$.1": "QuestVariables if done after [1]: 2 0 0 0 0 96"
+ },
+ {
+ "DataId": 1041744,
+ "Position": {
+ "X": -110.12439,
+ "Y": -133.07341,
+ "Z": -556.7865
+ },
+ "TerritoryId": 959,
+ "InteractionType": "Interact",
+ "Comment": "Easygoing Loporrit"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1041556,
+ "Position": {
+ "X": 113.14563,
+ "Y": -133.07352,
+ "Z": -465.17133
+ },
+ "TerritoryId": 959,
+ "InteractionType": "Interact"
+ }
+ ]
+ }
+ ]
+}
diff --git a/Questionable/QuestPaths/Endwalker/AetherCurrents/Ultima Thule/4342_Ending as One.json b/Questionable/QuestPaths/Endwalker/AetherCurrents/Ultima Thule/4342_Ending as One.json
new file mode 100644
index 000000000..537f9e4ed
--- /dev/null
+++ b/Questionable/QuestPaths/Endwalker/AetherCurrents/Ultima Thule/4342_Ending as One.json
@@ -0,0 +1,52 @@
+{
+ "Version": 1,
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1040876,
+ "Position": {
+ "X": 49.42395,
+ "Y": 269.25684,
+ "Z": -523.2472
+ },
+ "TerritoryId": 960,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "Position": {
+ "X": -41.26438,
+ "Y": 274.85336,
+ "Z": -523.8633
+ },
+ "TerritoryId": 960,
+ "InteractionType": "ManualAction",
+ "Comment": "Kill 2 Drifting Ea",
+ "$": "QuestVariables: 0 0-16-32 0 0 0 0"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1040876,
+ "Position": {
+ "X": 49.42395,
+ "Y": 269.25684,
+ "Z": -523.2472
+ },
+ "TerritoryId": 960,
+ "InteractionType": "Interact"
+ }
+ ]
+ }
+ ]
+}
diff --git a/Questionable/QuestPaths/Endwalker/AetherCurrents/Ultima Thule/4346_A Most Stimulating Discussion.json b/Questionable/QuestPaths/Endwalker/AetherCurrents/Ultima Thule/4346_A Most Stimulating Discussion.json
new file mode 100644
index 000000000..6927c1158
--- /dev/null
+++ b/Questionable/QuestPaths/Endwalker/AetherCurrents/Ultima Thule/4346_A Most Stimulating Discussion.json
@@ -0,0 +1,76 @@
+{
+ "Version": 1,
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1038016,
+ "Position": {
+ "X": 105.42456,
+ "Y": 269.29584,
+ "Z": -454.3069
+ },
+ "TerritoryId": 960,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1040880,
+ "Position": {
+ "X": -110.185425,
+ "Y": 269.2062,
+ "Z": -713.5271
+ },
+ "TerritoryId": 960,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Ultima Thule - Abode of the Ea"
+ },
+ {
+ "DataId": 1040881,
+ "Position": {
+ "X": -201.86163,
+ "Y": 288.6714,
+ "Z": -466.331
+ },
+ "TerritoryId": 960,
+ "InteractionType": "Interact",
+ "$.0": "[2]",
+ "$.1": "QuestVariables if done after [3]: 32 17 0 0 0 160"
+ },
+ {
+ "DataId": 1040879,
+ "Position": {
+ "X": -184.52734,
+ "Y": 267.47086,
+ "Z": -292.65283
+ },
+ "TerritoryId": 960,
+ "InteractionType": "Interact",
+ "$.0": "[3]",
+ "$.1": "QuestVariables if done first: 16 1 0 0 0 128"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1038016,
+ "Position": {
+ "X": 105.42456,
+ "Y": 269.29584,
+ "Z": -454.3069
+ },
+ "TerritoryId": 960,
+ "InteractionType": "Interact"
+ }
+ ]
+ }
+ ]
+}
diff --git a/Questionable/QuestPaths/Endwalker/AetherCurrents/Ultima Thule/4354_Combat Evolved.json b/Questionable/QuestPaths/Endwalker/AetherCurrents/Ultima Thule/4354_Combat Evolved.json
new file mode 100644
index 000000000..68b2a1629
--- /dev/null
+++ b/Questionable/QuestPaths/Endwalker/AetherCurrents/Ultima Thule/4354_Combat Evolved.json
@@ -0,0 +1,56 @@
+{
+ "Version": 1,
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1038043,
+ "Position": {
+ "X": 470.4203,
+ "Y": 437.00183,
+ "Z": 315.81592
+ },
+ "TerritoryId": 960,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "Position": {
+ "X": 656.94653,
+ "Y": 437.98502,
+ "Z": 302.6322
+ },
+ "StopDistance": 0.5,
+ "TerritoryId": 960,
+ "InteractionType": "ManualAction",
+ "EnemySpawnType": "AutoOnEnterArea",
+ "KillEnemyDataIds": [
+ 14044
+ ],
+ "Comment": "Can maybe be automated to use item depending on quest vars??"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1038043,
+ "Position": {
+ "X": 470.4203,
+ "Y": 437.00183,
+ "Z": 315.81592
+ },
+ "TerritoryId": 960,
+ "InteractionType": "Interact"
+ }
+ ]
+ }
+ ]
+}
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/F-Labyrinthos2/4442_No Job Too Small.json b/Questionable/QuestPaths/Endwalker/MSQ/F-Labyrinthos2/4442_No Job Too Small.json
index f0bfbd39e..2de34634c 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/F-Labyrinthos2/4442_No Job Too Small.json
+++ b/Questionable/QuestPaths/Endwalker/MSQ/F-Labyrinthos2/4442_No Job Too Small.json
@@ -21,47 +21,6 @@
{
"Sequence": 1,
"Steps": [
- {
- "Position": {
- "X": -102.94707,
- "Y": -29.933468,
- "Z": 674.6727
- },
- "TerritoryId": 956,
- "InteractionType": "WalkTo"
- },
- {
- "Position": {
- "X": -118.62926,
- "Y": -22.071072,
- "Z": 681.35846
- },
- "TerritoryId": 956,
- "InteractionType": "ManualAction",
- "DisableNavmesh": true,
- "Comment": "Navmesh can't jump"
- },
- {
- "DataId": 2011986,
- "Position": {
- "X": -128.06903,
- "Y": -20.523438,
- "Z": 676.7223
- },
- "TerritoryId": 956,
- "InteractionType": "AttuneAetherCurrent",
- "AetherCurrentId": 2818317
- },
- {
- "Position": {
- "X": -114.01625,
- "Y": -30.313616,
- "Z": 670.05585
- },
- "TerritoryId": 956,
- "InteractionType": "WalkTo",
- "DisableNavmesh": true
- },
{
"Position": {
"X": 79.66557,
@@ -69,7 +28,8 @@
"Z": 457.04776
},
"TerritoryId": 956,
- "InteractionType": "WalkTo"
+ "InteractionType": "WalkTo",
+ "Comment": "TODO verify this is correct, there was an aether current prior to this"
},
{
"DataId": 2011989,
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/F-Labyrinthos2/4447_Once Forged.json b/Questionable/QuestPaths/Endwalker/MSQ/F-Labyrinthos2/4447_Once Forged.json
index f4f01da3a..129aa1ff5 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/F-Labyrinthos2/4447_Once Forged.json
+++ b/Questionable/QuestPaths/Endwalker/MSQ/F-Labyrinthos2/4447_Once Forged.json
@@ -83,6 +83,47 @@
"InteractionType": "AttuneAetherCurrent",
"AetherCurrentId": 2818316
},
+ {
+ "Position": {
+ "X": -102.94707,
+ "Y": -29.933468,
+ "Z": 674.6727
+ },
+ "TerritoryId": 956,
+ "InteractionType": "WalkTo"
+ },
+ {
+ "Position": {
+ "X": -118.62926,
+ "Y": -22.071072,
+ "Z": 681.35846
+ },
+ "TerritoryId": 956,
+ "InteractionType": "ManualAction",
+ "DisableNavmesh": true,
+ "Comment": "Navmesh can't jump"
+ },
+ {
+ "DataId": 2011986,
+ "Position": {
+ "X": -128.06903,
+ "Y": -20.523438,
+ "Z": 676.7223
+ },
+ "TerritoryId": 956,
+ "InteractionType": "AttuneAetherCurrent",
+ "AetherCurrentId": 2818317
+ },
+ {
+ "Position": {
+ "X": -114.01625,
+ "Y": -30.313616,
+ "Z": 670.05585
+ },
+ "TerritoryId": 956,
+ "InteractionType": "WalkTo",
+ "DisableNavmesh": true
+ },
{
"DataId": 1040455,
"Position": {
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/F-Labyrinthos2/4448_Bonds of Adamantite.json b/Questionable/QuestPaths/Endwalker/MSQ/F-Labyrinthos2/4448_Bonds of Adamantite.json
index e0f7313c8..ae59c6253 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/F-Labyrinthos2/4448_Bonds of Adamantite.json
+++ b/Questionable/QuestPaths/Endwalker/MSQ/F-Labyrinthos2/4448_Bonds of Adamantite.json
@@ -20,6 +20,16 @@
{
"Sequence": 1,
"Steps": [
+ {
+ "Position": {
+ "X": 5.4520116,
+ "Y": -28.723352,
+ "Z": -42.992764
+ },
+ "AetheryteShortcut": "Labyrinthos - Sharlayan Hamlet",
+ "TerritoryId": 956,
+ "InteractionType": "WalkTo"
+ },
{
"DataId": 2012226,
"Position": {
@@ -58,7 +68,8 @@
"Z": 301.93018
},
"TerritoryId": 956,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Labyrinthos - Aporia"
}
]
},
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/F-Labyrinthos2/4449_Her Children One and All.json b/Questionable/QuestPaths/Endwalker/MSQ/F-Labyrinthos2/4449_Her Children One and All.json
index ebcf3a365..53f10dbeb 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/F-Labyrinthos2/4449_Her Children One and All.json
+++ b/Questionable/QuestPaths/Endwalker/MSQ/F-Labyrinthos2/4449_Her Children One and All.json
@@ -1,7 +1,6 @@
{
"Version": 1,
"Author": "liza",
- "Comment": "Sequence 2 is 'Enter' dungeon, Sequence 3 is 'Clear' dungeon",
"QuestSequence": [
{
"Sequence": 0,
@@ -91,6 +90,7 @@
},
"TerritoryId": 962,
"InteractionType": "Interact",
+ "StopDistance": 5,
"AethernetShortcut": [
"[Old Sharlayan] The Rostra",
"[Old Sharlayan] The Baldesion Annex"
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4450_A Bold Decision.json b/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4450_A Bold Decision.json
index d77ad64cd..0dbe3cf11 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4450_A Bold Decision.json
+++ b/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4450_A Bold Decision.json
@@ -12,6 +12,7 @@
"Y": 3.9334679,
"Z": 1.3884888
},
+ "StopDistance": 7,
"TerritoryId": 962,
"InteractionType": "Interact"
}
@@ -96,6 +97,7 @@
"Y": 5.1499996,
"Z": -65.87323
},
+ "StopDistance": 5,
"TerritoryId": 962,
"InteractionType": "Interact"
}
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4451_Friends Gathered.json b/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4451_Friends Gathered.json
index a847682f1..ff79368ec 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4451_Friends Gathered.json
+++ b/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4451_Friends Gathered.json
@@ -65,6 +65,7 @@
"Y": -13.777,
"Z": 149.70618
},
+ "StopDistance": 5,
"TerritoryId": 962,
"InteractionType": "Interact"
}
@@ -114,8 +115,13 @@
"Y": 4.357494,
"Z": 0.7476196
},
+ "StopDistance": 5,
"TerritoryId": 962,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "AethernetShortcut": [
+ "[Old Sharlayan] The Leveilleur Estate",
+ "[Old Sharlayan] The Baldesion Annex"
+ ]
}
]
}
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4452_Unto the Heavens.json b/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4452_Unto the Heavens.json
index f15b9b315..89c4e4eec 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4452_Unto the Heavens.json
+++ b/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4452_Unto the Heavens.json
@@ -12,6 +12,7 @@
"Y": 4.357494,
"Z": 0.7476196
},
+ "StopDistance": 5,
"TerritoryId": 962,
"InteractionType": "Interact"
}
@@ -29,6 +30,7 @@
},
"TerritoryId": 956,
"InteractionType": "Interact",
+ "AetheryteShortcut": "Labyrinthos - Aporia",
"SkipIf": [
"FlyingUnlocked"
]
@@ -41,7 +43,8 @@
"Z": 301.56396
},
"TerritoryId": 956,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "Fly": true
}
]
},
@@ -70,6 +73,7 @@
"Y": 80.7959,
"Z": 607.6904
},
+ "StopDistance": 5,
"TerritoryId": 960,
"InteractionType": "Interact"
}
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4453_A Strange New World.json b/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4453_A Strange New World.json
index 9a485536b..cf022dd13 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4453_A Strange New World.json
+++ b/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4453_A Strange New World.json
@@ -12,6 +12,7 @@
"Y": 80.86001,
"Z": 606.53076
},
+ "StopDistance": 7,
"TerritoryId": 960,
"InteractionType": "Interact"
}
@@ -43,7 +44,9 @@
"Z": 533.6842
},
"TerritoryId": 960,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "$.0": "[1]",
+ "$.1": "QuestVariables if done first: 16 1 0 0 0 128"
},
{
"DataId": 1040292,
@@ -53,7 +56,9 @@
"Z": 554.4059
},
"TerritoryId": 960,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "$.0": "[2]",
+ "$.2": "QuestVariables if done after [1]: 33 1 0 0 0 192"
},
{
"DataId": 1040293,
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4454_On Burdened Wings.json b/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4454_On Burdened Wings.json
index 631506532..a71e5b75a 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4454_On Burdened Wings.json
+++ b/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4454_On Burdened Wings.json
@@ -12,6 +12,7 @@
"Y": 73.47535,
"Z": 309.86487
},
+ "StopDistance": 7,
"TerritoryId": 960,
"InteractionType": "Interact"
}
@@ -27,8 +28,11 @@
"Y": 72.5362,
"Z": 332.23462
},
+ "StopDistance": 8,
"TerritoryId": 960,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "$.0": "[1]",
+ "$.1": "QuestVariables if done first: 1 0 0 0 0 64"
},
{
"DataId": 1038008,
@@ -37,8 +41,11 @@
"Y": 78.6382,
"Z": 303.8529
},
+ "StopDistance": 8,
"TerritoryId": 960,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "$.0": "[2]",
+ "$.1": "QuestVariables if done after [1]: 2 0 0 0 0 96"
},
{
"DataId": 179,
@@ -47,6 +54,7 @@
"Y": 74.34187,
"Z": 269.6726
},
+ "StopDistance": 10,
"TerritoryId": 960,
"InteractionType": "AttuneAetheryte"
},
@@ -57,6 +65,7 @@
"Y": 88.871994,
"Z": 207.35486
},
+ "StopDistance": 8,
"TerritoryId": 960,
"InteractionType": "Interact"
}
@@ -88,17 +97,9 @@
"Z": -30.71643
},
"TerritoryId": 960,
- "InteractionType": "Interact"
- },
- {
- "DataId": 2012283,
- "Position": {
- "X": -465.1103,
- "Y": 56.47351,
- "Z": -30.71643
- },
- "TerritoryId": 960,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "$.0": "[1]",
+ "$.1": "QuestVariables if done first: 1 0 0 0 0 ??"
},
{
"DataId": 2012282,
@@ -108,6 +109,18 @@
"Z": -33.676758
},
"TerritoryId": 960,
+ "InteractionType": "Interact",
+ "$.0": "[1]",
+ "$.1": "QuestVariables if done after [1]: 2 0 0 0 0 ??"
+ },
+ {
+ "DataId": 2012281,
+ "Position": {
+ "X": -472.25153,
+ "Y": 56.26001,
+ "Z": -20.676025
+ },
+ "TerritoryId": 960,
"InteractionType": "Interact"
}
]
@@ -137,8 +150,10 @@
"Y": 64.78333,
"Z": -200.3357
},
+ "StopDistance": 1,
"TerritoryId": 960,
"InteractionType": "Combat",
+ "EnemySpawnType": "AutoOnEnterArea",
"KillEnemyDataIds": [
14002
]
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4455_A Test of Will.json b/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4455_A Test of Will.json
index b3a9e5b83..6f0777b83 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4455_A Test of Will.json
+++ b/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4455_A Test of Will.json
@@ -28,7 +28,8 @@
"Z": 273.9757
},
"TerritoryId": 960,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Ultima Thule - Reah Tahra"
}
]
},
@@ -42,6 +43,7 @@
"Y": 59.814697,
"Z": 55.954834
},
+ "StopDistance": 8,
"TerritoryId": 960,
"InteractionType": "Interact"
}
@@ -82,6 +84,7 @@
"Y": 232.19641,
"Z": -253.10144
},
+ "StopDistance": 5,
"TerritoryId": 960,
"InteractionType": "Interact"
}
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4456_Roads Paved of Sacrifice.json b/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4456_Roads Paved of Sacrifice.json
index c3e343814..3e06deef5 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4456_Roads Paved of Sacrifice.json
+++ b/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4456_Roads Paved of Sacrifice.json
@@ -12,6 +12,7 @@
"Y": 232.2548,
"Z": -252.8573
},
+ "StopDistance": 5,
"TerritoryId": 960,
"InteractionType": "Interact"
}
@@ -58,7 +59,8 @@
"Z": -361.50153
},
"TerritoryId": 960,
- "InteractionType": "AttuneAetherCurrent"
+ "InteractionType": "AttuneAetherCurrent",
+ "AetherCurrentId": 2818389
},
{
"DataId": 2012035,
@@ -68,7 +70,8 @@
"Z": -295.15533
},
"TerritoryId": 960,
- "InteractionType": "AttuneAetherCurrent"
+ "InteractionType": "AttuneAetherCurrent",
+ "AetherCurrentId": 2818394
},
{
"DataId": 1040317,
@@ -78,7 +81,8 @@
"Z": -312.58112
},
"TerritoryId": 960,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "DisableNavmesh": true
}
]
},
@@ -107,8 +111,11 @@
"Y": 272.51086,
"Z": -600.7019
},
+ "StopDistance": 4,
"TerritoryId": 960,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "$.0": "[1]",
+ "$.1": "QuestVariables if done first: 1 0 0 0 0 128"
},
{
"DataId": 2012355,
@@ -117,8 +124,11 @@
"Y": 272.4497,
"Z": -616.4492
},
+ "StopDistance": 4,
"TerritoryId": 960,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "$.0": "[2]",
+ "$.1": "QuestVariables if done after [1]: 2 0 0 0 0 192"
},
{
"DataId": 180,
@@ -127,6 +137,7 @@
"Y": 272.48022,
"Z": -657.49603
},
+ "StopDistance": 8,
"TerritoryId": 960,
"InteractionType": "AttuneAetheryte"
},
@@ -137,8 +148,11 @@
"Y": 272.99915,
"Z": -617.853
},
+ "StopDistance": 4,
"TerritoryId": 960,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "$.0": "[3]",
+ "$.1": "QuestVariables if done after [2]: 3 0 0 0 0 224"
},
{
"DataId": 2012357,
@@ -147,8 +161,11 @@
"Y": 272.9381,
"Z": -592.5841
},
+ "StopDistance": 4,
"TerritoryId": 960,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "$.0": "[4]",
+ "$.1": "QuestVariables if done first: TODO"
}
]
},
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4457_Flesh Abandoned.json b/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4457_Flesh Abandoned.json
index 437dc0720..16e9a70cb 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4457_Flesh Abandoned.json
+++ b/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4457_Flesh Abandoned.json
@@ -72,6 +72,7 @@
"Y": 269.0949,
"Z": -491.66098
},
+ "StopDistance": 7,
"TerritoryId": 960,
"InteractionType": "Interact"
}
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4458_Where Knowledge Leads.json b/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4458_Where Knowledge Leads.json
index ade54fa1a..ede2f55d6 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4458_Where Knowledge Leads.json
+++ b/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4458_Where Knowledge Leads.json
@@ -12,6 +12,7 @@
"Y": 269.0903,
"Z": -490.44025
},
+ "StopDistance": 7,
"TerritoryId": 960,
"InteractionType": "Interact"
}
@@ -50,6 +51,35 @@
{
"Sequence": 255,
"Steps": [
+ {
+ "Position": {
+ "X": -353.82343,
+ "Y": 263.4366,
+ "Z": -458.5238
+ },
+ "TerritoryId": 960,
+ "InteractionType": "WalkTo",
+ "Mount": true
+ },
+ {
+ "Position": {
+ "X": -394.40567,
+ "Y": 266.7831,
+ "Z": -478.6604
+ },
+ "TerritoryId": 960,
+ "InteractionType": "WalkTo",
+ "DisableNavmesh": true
+ },
+ {
+ "Position": {
+ "X": -408.86514,
+ "Y": 266.81473,
+ "Z": -519.4911
+ },
+ "TerritoryId": 960,
+ "InteractionType": "WalkTo"
+ },
{
"DataId": 2012036,
"Position": {
@@ -58,7 +88,21 @@
"Z": -629.8772
},
"TerritoryId": 960,
- "InteractionType": "Interact"
+ "InteractionType": "AttuneAetherCurrent",
+ "AetherCurrentId": 2818395
+ },
+ {
+ "DataId": 2012031,
+ "Position": {
+ "X": 13.107483,
+ "Y": 275.56262,
+ "Z": -756.40497
+ },
+ "TerritoryId": 960,
+ "InteractionType": "AttuneAetherCurrent",
+ "AetheryteShortcut": "Ultima Thule - Abode of the Ea",
+ "AetherCurrentId": 2818390,
+ "Comment": "TODO Verify"
},
{
"DataId": 1039778,
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4459_Victory x Lost.json b/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4459_Victory x Lost.json
index eabfc771f..74e149b1f 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4459_Victory x Lost.json
+++ b/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4459_Victory x Lost.json
@@ -12,6 +12,7 @@
"Y": 269.0203,
"Z": -633.5393
},
+ "StopDistance": 5,
"TerritoryId": 960,
"InteractionType": "Interact"
}
@@ -20,6 +21,17 @@
{
"Sequence": 1,
"Steps": [
+ {
+ "DataId": 2012034,
+ "Position": {
+ "X": 424.55164,
+ "Y": 283.37524,
+ "Z": -679.7742
+ },
+ "TerritoryId": 960,
+ "InteractionType": "AttuneAetherCurrent",
+ "AetherCurrentId": 2818393
+ },
{
"DataId": 1039787,
"Position": {
@@ -54,6 +66,7 @@
},
"TerritoryId": 960,
"InteractionType": "Combat",
+ "EnemySpawnType": "AfterInteraction",
"KillEnemyDataIds": [
14000,
14001
@@ -86,6 +99,7 @@
"Y": 439.695,
"Z": 155.59619
},
+ "StopDistance": 5,
"TerritoryId": 960,
"InteractionType": "Interact"
}
@@ -118,6 +132,7 @@
},
"TerritoryId": 960,
"InteractionType": "Combat",
+ "EnemySpawnType": "AfterInteraction",
"KillEnemyDataIds": [
13999
]
@@ -135,7 +150,8 @@
"Z": 239.39868
},
"TerritoryId": 960,
- "InteractionType": "AttuneAetherCurrent"
+ "InteractionType": "AttuneAetherCurrent",
+ "AetherCurrentId": 2818392
},
{
"DataId": 1039791,
@@ -194,29 +210,10 @@
"Y": 437.5829,
"Z": 333.63843
},
+ "StopDistance": 5,
"TerritoryId": 960,
"InteractionType": "AttuneAetheryte"
},
- {
- "DataId": 2012031,
- "Position": {
- "X": 13.107483,
- "Y": 275.56262,
- "Z": -756.40497
- },
- "TerritoryId": 960,
- "InteractionType": "AttuneAetherCurrent"
- },
- {
- "DataId": 2012034,
- "Position": {
- "X": 424.55164,
- "Y": 283.37524,
- "Z": -679.7742
- },
- "TerritoryId": 960,
- "InteractionType": "AttuneAetherCurrent"
- },
{
"DataId": 1039791,
"Position": {
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4460_x.json b/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4460_x.json
index 6d64d03ae..cb9500ea5 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4460_x.json
+++ b/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4460_x.json
@@ -12,6 +12,7 @@
"Y": 437.9998,
"Z": 301.4419
},
+ "StopDistance": 5,
"TerritoryId": 960,
"InteractionType": "Interact"
}
@@ -28,7 +29,8 @@
"Z": 402.12085
},
"TerritoryId": 960,
- "InteractionType": "AttuneAetherCurrent"
+ "InteractionType": "AttuneAetherCurrent",
+ "AetherCurrentId": 2818398
},
{
"DataId": 2012032,
@@ -38,7 +40,8 @@
"Z": 411.73413
},
"TerritoryId": 960,
- "InteractionType": "AttuneAetherCurrent"
+ "InteractionType": "AttuneAetherCurrent",
+ "AetherCurrentId": 2818391
},
{
"DataId": 1040343,
@@ -110,7 +113,16 @@
},
"TerritoryId": 960,
"InteractionType": "AttuneAetherCurrent",
- "Comment": "Unsure if this is the right spot"
+ "AetherCurrentId": 2818396
+ },
+ {
+ "Position": {
+ "X": 639.9123,
+ "Y": 438.7276,
+ "Z": 293.33954
+ },
+ "TerritoryId": 960,
+ "InteractionType": "WalkTo"
},
{
"DataId": 2012038,
@@ -120,7 +132,9 @@
"Z": 289.66187
},
"TerritoryId": 960,
- "InteractionType": "AttuneAetherCurrent"
+ "InteractionType": "AttuneAetherCurrent",
+ "AetherCurrentId": 2818397,
+ "DisableNavmesh": true
},
{
"DataId": 1040349,
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4461_Hello World.json b/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4461_Hello World.json
index f20abe88e..7fddef99b 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4461_Hello World.json
+++ b/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4461_Hello World.json
@@ -28,7 +28,8 @@
"Z": 303.8529
},
"TerritoryId": 960,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Ultima Thule - Base Omicron"
}
]
},
@@ -44,7 +45,7 @@
},
"TerritoryId": 960,
"InteractionType": "ManualAction",
- "Comment": "Identify Anomaly (Elbow)"
+ "Comment": "Identify Anomaly (Elbow/Knee)"
}
]
},
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4462_Forge Ahead.json b/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4462_Forge Ahead.json
index ff5df6aa6..8d3eda324 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4462_Forge Ahead.json
+++ b/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4462_Forge Ahead.json
@@ -28,7 +28,8 @@
"Z": 360.46387
},
"TerritoryId": 960,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Ultima Thule - Base Omicron"
}
]
},
@@ -82,6 +83,7 @@
"Y": 566,
"Z": 317.96698
},
+ "StopDistance": 1,
"TerritoryId": 960,
"InteractionType": "Interact"
}
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4463_Youre Not Alone.json b/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4463_Youre Not Alone.json
index 6c7903079..84bf520b8 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4463_Youre Not Alone.json
+++ b/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4463_Youre Not Alone.json
@@ -28,7 +28,9 @@
"Z": 296.98633
},
"TerritoryId": 960,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "$.0": "[1]",
+ "$.1": "QuestVariables if done first: 16 0 0 16 0 128"
},
{
"DataId": 2012367,
@@ -38,7 +40,9 @@
"Z": 240.03955
},
"TerritoryId": 960,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "$.0": "[2]",
+ "$.1": "QuestVariables if done after [1]: 32 16 0 16 0 144"
},
{
"DataId": 2012368,
@@ -48,7 +52,9 @@
"Z": 280.93384
},
"TerritoryId": 960,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "$.0": "[3]",
+ "$.1": "QuestVariables if done after [1, 2]: 48 17 0 16 0 152"
},
{
"DataId": 2012366,
@@ -58,7 +64,9 @@
"Z": 295.97925
},
"TerritoryId": 960,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "$.0": "[4]",
+ "$.1": "QuestVariables if done after [1, 2, 3]: 65 17 0 16 0 184"
},
{
"DataId": 2012369,
@@ -68,7 +76,9 @@
"Z": 297.16943
},
"TerritoryId": 960,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "$.0": "[5]",
+ "$.1": "QuestVariables if done after [1, 2, 3, 4]: 81 17 16 16 0 188"
},
{
"DataId": 2012365,
@@ -121,8 +131,8 @@
"Y": 637.1029,
"Z": 2.690414
},
- "TerritoryId": 960,
- "InteractionType": "Interact"
+ "TerritoryId": 1027,
+ "InteractionType": "WalkTo"
}
]
},
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4464_Endwalker.json b/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4464_Endwalker.json
index edd471cfe..dc1a27d28 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4464_Endwalker.json
+++ b/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4464_Endwalker.json
@@ -46,6 +46,7 @@
"Y": 0,
"Z": 106
},
+ "StopDistance": 5,
"TerritoryId": 1029,
"InteractionType": "ManualAction",
"Comment": "Duty - The Final Day"
@@ -78,8 +79,11 @@
"Y": 0,
"Z": 0.8086548
},
+ "StopDistance": 5,
"TerritoryId": 351,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "$.0": "[1]",
+ "$.1": "QuestVariables if done first: 1 0 0 0 0 1"
},
{
"DataId": 1041181,
@@ -88,8 +92,11 @@
"Y": 0,
"Z": 0.6560669
},
+ "StopDistance": 5,
"TerritoryId": 351,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "$.0": "[2]",
+ "$.1": "QuestVariables if done after [1]: 2 0 0 0 0 129"
},
{
"DataId": 1041182,
@@ -99,7 +106,9 @@
"Z": -4.7455444
},
"TerritoryId": 351,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "$.0": "[3]",
+ "$.1": "QuestVariables if done after [1, 2]: 3 0 0 0 0 193"
},
{
"DataId": 1041184,
@@ -108,8 +117,11 @@
"Y": 0,
"Z": -5.8442383
},
+ "StopDistance": 5,
"TerritoryId": 351,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "$.0": "[4]",
+ "$.1": "QuestVariables if done after [1, 2, 3]: 4 0 0 0 0 209"
},
{
"DataId": 1041183,
@@ -119,7 +131,9 @@
"Z": -6.790344
},
"TerritoryId": 351,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "$.0": "[5]",
+ "$.1": "QuestVariables if done after [1, 2, 3, 4]: 5 0 0 0 0 241"
},
{
"DataId": 1041187,
@@ -129,7 +143,9 @@
"Z": -8.255188
},
"TerritoryId": 351,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "$.0": "[6]",
+ "$.1": "QuestVariables if done after [1, 2, 3, 4, 5]: 6 0 0 0 0 243"
},
{
"DataId": 1041185,
@@ -139,7 +155,9 @@
"Z": -5.7526855
},
"TerritoryId": 351,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "$.0": "[7]",
+ "$.1": "QuestVariables if done after [1, 2, 3, 4, 5, 6]: 7 0 0 0 0 251"
},
{
"DataId": 1041186,
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/H-6.1/4527_Bountiful Ruins.json b/Questionable/QuestPaths/Endwalker/MSQ/H-6.1/4527_Bountiful Ruins.json
index 0904c1ddc..bbcf8a31c 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/H-6.1/4527_Bountiful Ruins.json
+++ b/Questionable/QuestPaths/Endwalker/MSQ/H-6.1/4527_Bountiful Ruins.json
@@ -29,6 +29,7 @@
},
"TerritoryId": 963,
"InteractionType": "Interact",
+ "AetheryteShortcut": "Radz-at-Han",
"AethernetShortcut": [
"[Radz-at-Han] Aetheryte Plaza",
"[Radz-at-Han] Mehryde's Meyhane"
@@ -77,6 +78,7 @@
"Y": -3.2177195E-06,
"Z": -13.687378
},
+ "StopDistance": 5,
"TerritoryId": 963,
"InteractionType": "Interact"
}
@@ -93,7 +95,9 @@
"Z": 570.94666
},
"TerritoryId": 957,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Thavnair - Yedlihmad",
+ "Fly": true
}
]
}
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/H-6.1/4528_Friends for the Road.json b/Questionable/QuestPaths/Endwalker/MSQ/H-6.1/4528_Friends for the Road.json
index c67d21702..eea0ec923 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/H-6.1/4528_Friends for the Road.json
+++ b/Questionable/QuestPaths/Endwalker/MSQ/H-6.1/4528_Friends for the Road.json
@@ -27,8 +27,10 @@
"Y": 4.357494,
"Z": 0.7476196
},
+ "StopDistance": 5,
"TerritoryId": 962,
"InteractionType": "Interact",
+ "AetheryteShortcut": "Old Sharlayan",
"AethernetShortcut": [
"[Old Sharlayan] Aetheryte Plaza",
"[Old Sharlayan] The Baldesion Annex"
@@ -39,6 +41,19 @@
{
"Sequence": 2,
"Steps": [
+ {
+ "Position": {
+ "X": -350.9551,
+ "Y": 18.999998,
+ "Z": 56.043774
+ },
+ "TerritoryId": 962,
+ "InteractionType": "WalkTo",
+ "AethernetShortcut": [
+ "[Old Sharlayan] The Baldesion Annex",
+ "[Old Sharlayan] The Studium"
+ ]
+ },
{
"DataId": 1039581,
"Position": {
@@ -47,11 +62,7 @@
"Z": 92.48486
},
"TerritoryId": 962,
- "InteractionType": "Interact",
- "AethernetShortcut": [
- "[Old Sharlayan] The Baldesion Annex",
- "[Old Sharlayan] The Studium"
- ]
+ "InteractionType": "Interact"
}
]
},
@@ -67,6 +78,7 @@
},
"TerritoryId": 956,
"InteractionType": "Interact",
+ "AetheryteShortcut": "Labyrinthos - Aporia",
"SkipIf": [
"FlyingUnlocked"
]
@@ -79,7 +91,8 @@
"Z": 298.39014
},
"TerritoryId": 956,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "Fly": true
}
]
},
@@ -94,7 +107,9 @@
"Z": 603.41797
},
"TerritoryId": 957,
- "InteractionType": "Interact"
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Thavnair - Yedlihmad",
+ "Fly": true
}
]
}
diff --git a/Questionable/QuestSchema/schema_v1.json b/Questionable/QuestSchema/schema_v1.json
index b1030690b..46d49250a 100644
--- a/Questionable/QuestSchema/schema_v1.json
+++ b/Questionable/QuestSchema/schema_v1.json
@@ -103,7 +103,7 @@
]
},
"Disabled": {
- "description": "Unused (TODO)",
+ "description": "Whether this step is disabled (see SkipIf for more control)",
"type": "boolean"
},
"DisableNavmesh": {
@@ -301,7 +301,8 @@
"stretch",
"wave",
"rally",
- "deny"
+ "deny",
+ "pray"
]
},
"ChatMessage": {
diff --git a/Questionable/Windows/DebugWindow.cs b/Questionable/Windows/DebugWindow.cs
index 61c843bcd..2b08ab016 100644
--- a/Questionable/Windows/DebugWindow.cs
+++ b/Questionable/Windows/DebugWindow.cs
@@ -57,6 +57,7 @@ internal sealed class DebugWindow : Window
{
ImGui.TextUnformatted($"Quest: {currentQuest.Quest.Name} / {currentQuest.Sequence} / {currentQuest.Step}");
+ ImGui.BeginDisabled();
var questWork = _gameFunctions.GetQuestEx(currentQuest.Quest.QuestId);
if (questWork != null)
{
@@ -78,6 +79,7 @@ internal sealed class DebugWindow : Window
ImGui.TextUnformatted("(Not accepted)");
ImGui.TextUnformatted(_questController.DebugState ?? "--");
+ ImGui.EndDisabled();
ImGui.TextUnformatted(_questController.Comment ?? "--");
var nextStep = _questController.GetNextStep();