Some jumping, open DF for duties
This commit is contained in:
parent
f9a4008564
commit
a5bb4f15cb
@ -75,7 +75,6 @@ internal sealed class MovementController : IDisposable
|
||||
start = end;
|
||||
}
|
||||
|
||||
_pluginLog.Information($"Distance: {actualDistance}");
|
||||
unsafe
|
||||
{
|
||||
// 70 is ~10 seconds of sprint
|
||||
@ -119,8 +118,9 @@ internal sealed class MovementController : IDisposable
|
||||
{
|
||||
if (AetheryteConverter.IsLargeAetheryte((EAetheryteLocation)Destination.DataId))
|
||||
{
|
||||
// TODO verify this
|
||||
if (Math.Abs(localPlayerPosition.Y - gameObject.Position.Y) < 2.95f)
|
||||
// TODO verify the first part of this, is there any aetheryte like that?
|
||||
if (localPlayerPosition.Y - gameObject.Position.Y < 2.95f &&
|
||||
localPlayerPosition.Y - gameObject.Position.Y > -0.9f)
|
||||
Stop();
|
||||
}
|
||||
else
|
||||
|
@ -27,6 +27,7 @@ internal sealed class QuestController
|
||||
private readonly IPluginLog _pluginLog;
|
||||
private readonly ICondition _condition;
|
||||
private readonly IChatGui _chatGui;
|
||||
private readonly IFramework _framework;
|
||||
private readonly AetheryteData _aetheryteData;
|
||||
private readonly LifestreamIpc _lifestreamIpc;
|
||||
private readonly TerritoryData _territoryData;
|
||||
@ -34,7 +35,7 @@ internal sealed class QuestController
|
||||
|
||||
public QuestController(DalamudPluginInterface pluginInterface, IDataManager dataManager, IClientState clientState,
|
||||
GameFunctions gameFunctions, MovementController movementController, IPluginLog pluginLog, ICondition condition,
|
||||
IChatGui chatGui, AetheryteData aetheryteData, LifestreamIpc lifestreamIpc)
|
||||
IChatGui chatGui, IFramework framework, AetheryteData aetheryteData, LifestreamIpc lifestreamIpc)
|
||||
{
|
||||
_pluginInterface = pluginInterface;
|
||||
_dataManager = dataManager;
|
||||
@ -44,6 +45,7 @@ internal sealed class QuestController
|
||||
_pluginLog = pluginLog;
|
||||
_condition = condition;
|
||||
_chatGui = chatGui;
|
||||
_framework = framework;
|
||||
_aetheryteData = aetheryteData;
|
||||
_lifestreamIpc = lifestreamIpc;
|
||||
_territoryData = new TerritoryData(dataManager);
|
||||
@ -358,7 +360,13 @@ internal sealed class QuestController
|
||||
|
||||
if (step.TargetTerritoryId == _clientState.TerritoryType)
|
||||
{
|
||||
_pluginLog.Information("Skipping any movement");
|
||||
_pluginLog.Information("Zone transition, skipping movement");
|
||||
}
|
||||
else if (step.InteractionType == EInteractionType.Jump && step.JumpDestination != null &&
|
||||
(_clientState.LocalPlayer!.Position - step.JumpDestination.Position).Length() <=
|
||||
(step.JumpDestination.StopDistance ?? 1f))
|
||||
{
|
||||
_pluginLog.Information("We're at the jump destination, skipping movement");
|
||||
}
|
||||
else if (step.Position != null)
|
||||
{
|
||||
@ -582,7 +590,9 @@ internal sealed class QuestController
|
||||
break;
|
||||
|
||||
case EInteractionType.Duty:
|
||||
// TODO open duty finder
|
||||
if (step.ContentFinderConditionId != null)
|
||||
_gameFunctions.OpenDutyFinder(step.ContentFinderConditionId.Value);
|
||||
|
||||
break;
|
||||
|
||||
case EInteractionType.SinglePlayerDuty:
|
||||
@ -591,9 +601,24 @@ internal sealed class QuestController
|
||||
break;
|
||||
|
||||
case EInteractionType.Jump:
|
||||
// TODO implement somehow??
|
||||
if (step.JumpDestination != null && !_condition[ConditionFlag.Jumping])
|
||||
{
|
||||
float stopDistance = step.JumpDestination.StopDistance ?? 1f;
|
||||
if ((_clientState.LocalPlayer!.Position - step.JumpDestination.Position).Length() <= stopDistance)
|
||||
IncreaseStepCount();
|
||||
else
|
||||
{
|
||||
_movementController.NavigateTo(EMovementType.Quest, step.DataId,
|
||||
[step.JumpDestination.Position],
|
||||
false, step.JumpDestination.StopDistance ?? stopDistance);
|
||||
_framework.RunOnTick(() => ActionManager.Instance()->UseAction(ActionType.GeneralAction, 2),
|
||||
TimeSpan.FromSeconds(step.JumpDestination.DelaySeconds ?? 0.5f));
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case EInteractionType.ShouldBeAJump:
|
||||
case EInteractionType.Instruction:
|
||||
// Need to manually forward
|
||||
break;
|
||||
|
@ -42,6 +42,7 @@ internal sealed unsafe class GameFunctions
|
||||
private readonly delegate* unmanaged<Utf8String*, int, IntPtr, void> _sanitiseString;
|
||||
private readonly ReadOnlyDictionary<ushort, byte> _territoryToAetherCurrentCompFlgSet;
|
||||
private readonly ReadOnlyDictionary<EEmote, string> _emoteCommands;
|
||||
private readonly ReadOnlyDictionary<uint, ushort> _contentFinderConditionToContentId;
|
||||
|
||||
private readonly IObjectTable _objectTable;
|
||||
private readonly ITargetManager _targetManager;
|
||||
@ -74,6 +75,10 @@ internal sealed unsafe class GameFunctions
|
||||
.Where(x => x.Command != null && x.Command.StartsWith('/'))
|
||||
.ToDictionary(x => (EEmote)x.RowId, x => x.Command!)
|
||||
.AsReadOnly();
|
||||
_contentFinderConditionToContentId = dataManager.GetExcelSheet<ContentFinderCondition>()
|
||||
.Where(x => x.RowId > 0 && x.Content > 0)
|
||||
.ToDictionary(x => x.RowId, x => x.Content)
|
||||
.AsReadOnly();
|
||||
}
|
||||
|
||||
// FIXME
|
||||
@ -364,7 +369,7 @@ internal sealed unsafe class GameFunctions
|
||||
if (gameObject != null)
|
||||
{
|
||||
var position = (FFXIVClientStructs.FFXIV.Common.Math.Vector3)gameObject.Position;
|
||||
ActionManager.Instance()->UseActionLocation(ActionType.KeyItem, itemId, gameObject.ObjectId, &position);
|
||||
ActionManager.Instance()->UseActionLocation(ActionType.KeyItem, itemId, location: &position);
|
||||
}
|
||||
}
|
||||
|
||||
@ -417,4 +422,17 @@ internal sealed unsafe class GameFunctions
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public void OpenDutyFinder(uint contentFinderConditionId)
|
||||
{
|
||||
if (_contentFinderConditionToContentId.TryGetValue(contentFinderConditionId, out ushort contentId))
|
||||
{
|
||||
if (UIState.IsInstanceContentUnlocked(contentId))
|
||||
AgentContentsFinder.Instance()->OpenRegularDuty(contentFinderConditionId);
|
||||
else
|
||||
_pluginLog.Error($"Trying to access a locked duty (cf: {contentFinderConditionId}, content: {contentId})");
|
||||
}
|
||||
else
|
||||
_pluginLog.Error($"Could not find content for content finder condition (cf: {contentFinderConditionId})");
|
||||
}
|
||||
}
|
||||
|
@ -19,7 +19,8 @@ public sealed class InteractionTypeConverter() : EnumConverter<EInteractionType>
|
||||
{ EInteractionType.WaitForManualProgress, "WaitForManualProgress" },
|
||||
{ EInteractionType.Duty, "Duty" },
|
||||
{ EInteractionType.SinglePlayerDuty, "SinglePlayerDuty" },
|
||||
{ EInteractionType.Jump, "ShouldBeAJump" },
|
||||
{ EInteractionType.Jump, "Jump" },
|
||||
{ EInteractionType.ShouldBeAJump, "ShouldBeAJump" },
|
||||
{ EInteractionType.Instruction, "Instruction" },
|
||||
};
|
||||
}
|
||||
|
@ -19,9 +19,13 @@ public enum EInteractionType
|
||||
WaitForManualProgress,
|
||||
Duty,
|
||||
SinglePlayerDuty,
|
||||
|
||||
Jump,
|
||||
|
||||
/// <summary>
|
||||
/// Needs to be adjusted for coords etc. in the quest data.
|
||||
/// </summary>
|
||||
ShouldBeAJump,
|
||||
|
||||
/// <summary>
|
||||
/// Needs to be manually continued.
|
||||
/// </summary>
|
||||
|
14
Questionable/Model/V1/JumpDestination.cs
Normal file
14
Questionable/Model/V1/JumpDestination.cs
Normal file
@ -0,0 +1,14 @@
|
||||
using System.Numerics;
|
||||
using System.Text.Json.Serialization;
|
||||
using Questionable.Model.V1.Converter;
|
||||
|
||||
namespace Questionable.Model.V1;
|
||||
|
||||
public sealed class JumpDestination
|
||||
{
|
||||
[JsonConverter(typeof(VectorConverter))]
|
||||
public Vector3 Position { get; set; }
|
||||
|
||||
public float? StopDistance { get; set; }
|
||||
public float? DelaySeconds { get; set; }
|
||||
}
|
@ -38,6 +38,8 @@ public class QuestStep
|
||||
public EEnemySpawnType? EnemySpawnType { get; set; }
|
||||
|
||||
public IList<uint> KillEnemyDataIds { get; set; } = new List<uint>();
|
||||
public JumpDestination? JumpDestination { get; set; }
|
||||
public uint? ContentFinderConditionId { get; set; }
|
||||
|
||||
public IList<ESkipCondition> SkipIf { get; set; } = new List<ESkipCondition>();
|
||||
}
|
||||
|
@ -53,15 +53,9 @@
|
||||
"Sequence": 3,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2011959,
|
||||
"Position": {
|
||||
"X": -636.4081,
|
||||
"Y": -0.015319824,
|
||||
"Z": -663.81323
|
||||
},
|
||||
"TerritoryId": 957,
|
||||
"InteractionType": "Duty",
|
||||
"Comment": "The Tower of Zot"
|
||||
"ContentFinderConditionId": 783
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -98,15 +98,9 @@
|
||||
"Sequence": 4,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2012113,
|
||||
"Position": {
|
||||
"X": -525.8717,
|
||||
"Y": -190.02063,
|
||||
"Z": -676.875
|
||||
},
|
||||
"TerritoryId": 958,
|
||||
"InteractionType": "Duty",
|
||||
"Comment": "The Tower of Babil"
|
||||
"ContentFinderConditionId": 785
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -39,14 +39,9 @@
|
||||
"Sequence": 2,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2012122,
|
||||
"Position": {
|
||||
"X": 99.96179,
|
||||
"Y": -0.015319824,
|
||||
"Z": 103.227295
|
||||
},
|
||||
"TerritoryId": 1028,
|
||||
"InteractionType": "Duty",
|
||||
"ContentFinderConditionId": 802,
|
||||
"Comment": "The Dark Inside"
|
||||
}
|
||||
]
|
||||
|
@ -63,15 +63,9 @@
|
||||
"Sequence": 4,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2012228,
|
||||
"Position": {
|
||||
"X": 205.82886,
|
||||
"Y": 1.7547607,
|
||||
"Z": 761.50134
|
||||
},
|
||||
"TerritoryId": 957,
|
||||
"InteractionType": "Duty",
|
||||
"Comment": "Vanaspati"
|
||||
"ContentFinderConditionId": 789
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -48,13 +48,20 @@
|
||||
},
|
||||
{
|
||||
"Position": {
|
||||
"X": 346.73517,
|
||||
"Y": -15.572778,
|
||||
"Z": -105.96149
|
||||
"X": 475.2184,
|
||||
"Y": -17.473314,
|
||||
"Z": 47.986946
|
||||
},
|
||||
"TerritoryId": 961,
|
||||
"InteractionType": "WalkTo",
|
||||
"Comment": "Needs manual jumping"
|
||||
"InteractionType": "Jump",
|
||||
"JumpDestination": {
|
||||
"Position": {
|
||||
"X": 477.34882,
|
||||
"Y": -16.407324,
|
||||
"Z": 43.802086
|
||||
},
|
||||
"DelaySeconds": 0.25
|
||||
}
|
||||
},
|
||||
{
|
||||
"DataId": 1040052,
|
||||
@ -78,6 +85,7 @@
|
||||
"Y": -14.757837,
|
||||
"Z": -115.15985
|
||||
},
|
||||
"StopDistance": 7,
|
||||
"TerritoryId": 961,
|
||||
"InteractionType": "Interact"
|
||||
}
|
||||
@ -95,6 +103,7 @@
|
||||
"StopDistance": 0.5,
|
||||
"TerritoryId": 961,
|
||||
"InteractionType": "WalkTo",
|
||||
"Mount": true,
|
||||
"DisableNavmesh": true
|
||||
},
|
||||
{
|
||||
@ -141,10 +150,33 @@
|
||||
"Sequence": 6,
|
||||
"Steps": [
|
||||
{
|
||||
"Position": {
|
||||
"X": -55.662647,
|
||||
"Y": -16.696985,
|
||||
"Z": -81.29199
|
||||
},
|
||||
"StopDistance": 0.25,
|
||||
"TerritoryId": 961,
|
||||
"InteractionType": "Jump",
|
||||
"JumpDestination": {
|
||||
"Position": {
|
||||
"X": -58.75509,
|
||||
"Y": -15.402463,
|
||||
"Z": -83.133934
|
||||
}
|
||||
},
|
||||
"DisableNavmesh": true
|
||||
},
|
||||
{
|
||||
"Position": {
|
||||
"X": -64.19198,
|
||||
"Y": -15.332472,
|
||||
"Z": -84.65695
|
||||
},
|
||||
"StopDistance": 0.25,
|
||||
"TerritoryId": 961,
|
||||
"InteractionType": "Emote",
|
||||
"Emote": "wave",
|
||||
"Comment": "Need to jump manually"
|
||||
"Emote": "wave"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -27,18 +27,16 @@
|
||||
"Y": -26.995626,
|
||||
"Z": 543.8281
|
||||
},
|
||||
"StopDistance": 0.5,
|
||||
"TerritoryId": 961,
|
||||
"InteractionType": "WalkTo"
|
||||
},
|
||||
{
|
||||
"Position": {
|
||||
"X": -137.80992,
|
||||
"Y": -26.995626,
|
||||
"Z": 543.8281
|
||||
},
|
||||
"TerritoryId": 961,
|
||||
"InteractionType": "ShouldBeAJump",
|
||||
"Comment": "Jump on Ledge"
|
||||
"InteractionType": "Jump",
|
||||
"JumpDestination": {
|
||||
"Position": {
|
||||
"X": -144.54877,
|
||||
"Y": -26.230347,
|
||||
"Z": 551.5067
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"DataId": 2012023,
|
||||
@ -59,6 +57,7 @@
|
||||
},
|
||||
"TerritoryId": 961,
|
||||
"InteractionType": "WalkTo",
|
||||
"Mount": true,
|
||||
"DisableNavmesh": true
|
||||
},
|
||||
{
|
||||
|
@ -45,7 +45,8 @@
|
||||
"Z": 546.50183
|
||||
},
|
||||
"TerritoryId": 961,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"$.1": "QuestVariables if done first: 1 0 0 0 0 128"
|
||||
},
|
||||
{
|
||||
"DataId": 2012136,
|
||||
@ -129,7 +130,8 @@
|
||||
"Z": 432.59787
|
||||
},
|
||||
"TerritoryId": 961,
|
||||
"InteractionType": "WalkTo"
|
||||
"InteractionType": "WalkTo",
|
||||
"Mount": true
|
||||
},
|
||||
{
|
||||
"DataId": 2012021,
|
||||
|
@ -29,7 +29,8 @@
|
||||
"Z": 236.07227
|
||||
},
|
||||
"TerritoryId": 961,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"AetheryteShortcut": "Elpis - Anagnorisis"
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -67,6 +68,17 @@
|
||||
{
|
||||
"Sequence": 4,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2012029,
|
||||
"Position": {
|
||||
"X": -255.54291,
|
||||
"Y": 143.05322,
|
||||
"Z": -36.972656
|
||||
},
|
||||
"TerritoryId": 961,
|
||||
"InteractionType": "AttuneAetherCurrent",
|
||||
"AetherCurrentId": 2818383
|
||||
},
|
||||
{
|
||||
"DataId": 2012146,
|
||||
"Position": {
|
||||
|
@ -114,7 +114,8 @@
|
||||
"Z": -197.54811
|
||||
},
|
||||
"TerritoryId": 961,
|
||||
"InteractionType": "WalkTo"
|
||||
"InteractionType": "WalkTo",
|
||||
"Mount": true
|
||||
},
|
||||
{
|
||||
"DataId": 1040117,
|
||||
|
@ -21,17 +21,6 @@
|
||||
{
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2012029,
|
||||
"Position": {
|
||||
"X": -255.54291,
|
||||
"Y": 143.05322,
|
||||
"Z": -36.972656
|
||||
},
|
||||
"TerritoryId": 961,
|
||||
"InteractionType": "AttuneAetherCurrent",
|
||||
"AetherCurrentId": 2818383
|
||||
},
|
||||
{
|
||||
"Position": {
|
||||
"X": -297.88638,
|
||||
|
@ -96,7 +96,7 @@
|
||||
"Y": 294.93375,
|
||||
"Z": -559.62463
|
||||
},
|
||||
"StopDistance": 5,
|
||||
"StopDistance": 6,
|
||||
"TerritoryId": 961,
|
||||
"InteractionType": "Interact"
|
||||
}
|
||||
|
@ -44,6 +44,7 @@
|
||||
},
|
||||
"TerritoryId": 961,
|
||||
"InteractionType": "WalkTo",
|
||||
"Mount": true,
|
||||
"DisableNavmesh": true
|
||||
},
|
||||
{
|
||||
|
@ -40,16 +40,9 @@
|
||||
"Sequence": 2,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2012172,
|
||||
"Position": {
|
||||
"X": -412.49713,
|
||||
"Y": 329.9458,
|
||||
"Z": -765.80457
|
||||
},
|
||||
"StopDistance": 4,
|
||||
"TerritoryId": 961,
|
||||
"InteractionType": "Duty",
|
||||
"Comment": "Ktisis Hyperborea"
|
||||
"ContentFinderConditionId": 787
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -45,8 +45,9 @@
|
||||
},
|
||||
"TerritoryId": 962,
|
||||
"InteractionType": "Interact",
|
||||
"AetheryteShortcut": "Old Sharlayan",
|
||||
"AethernetShortcut": [
|
||||
"[Old Sharlayan] Scholar's Harbor",
|
||||
"[Old Sharlayan] Aetheryte Plaza",
|
||||
"[Old Sharlayan] The Baldesion Annex"
|
||||
]
|
||||
}
|
||||
|
@ -28,8 +28,7 @@
|
||||
"Z": 457.04776
|
||||
},
|
||||
"TerritoryId": 956,
|
||||
"InteractionType": "WalkTo",
|
||||
"Comment": "TODO verify this is correct, there was an aether current prior to this"
|
||||
"InteractionType": "WalkTo"
|
||||
},
|
||||
{
|
||||
"DataId": 2011989,
|
||||
|
@ -26,9 +26,11 @@
|
||||
"Y": -28.723352,
|
||||
"Z": -42.992764
|
||||
},
|
||||
"StopDistance": 0.75,
|
||||
"TerritoryId": 956,
|
||||
"InteractionType": "WalkTo",
|
||||
"AetheryteShortcut": "Labyrinthos - Sharlayan Hamlet"
|
||||
"AetheryteShortcut": "Labyrinthos - Sharlayan Hamlet",
|
||||
"Mount": true
|
||||
},
|
||||
{
|
||||
"DataId": 1039687,
|
||||
@ -70,6 +72,7 @@
|
||||
"TerritoryId": 956,
|
||||
"InteractionType": "Interact",
|
||||
"Comment": "Distracted Researcher",
|
||||
"$.0": "[1]",
|
||||
"$.1": "QuestVariables if done first: 1 0 0 0 2 0"
|
||||
},
|
||||
{
|
||||
@ -82,6 +85,7 @@
|
||||
"TerritoryId": 956,
|
||||
"InteractionType": "Interact",
|
||||
"Comment": "Hyperventilating Engineer",
|
||||
"$.0": "[2]",
|
||||
"$.1": "QuestVariables if done after [1]: 2 0 0 0 130 0"
|
||||
},
|
||||
{
|
||||
@ -94,6 +98,7 @@
|
||||
"TerritoryId": 956,
|
||||
"InteractionType": "Interact",
|
||||
"Comment": "Harried Aetherologist",
|
||||
"$.0": "[3]",
|
||||
"$.1": "QuestVariables if done after [2]: 3 0 0 0 138 0"
|
||||
},
|
||||
{
|
||||
@ -106,6 +111,7 @@
|
||||
"TerritoryId": 956,
|
||||
"InteractionType": "Interact",
|
||||
"Comment": "Grimacing Naturalist",
|
||||
"$.0": "[4]",
|
||||
"$.1": "QuestVariables if done after [3]: 4 0 0 0 142 0"
|
||||
},
|
||||
{
|
||||
@ -118,6 +124,7 @@
|
||||
"TerritoryId": 956,
|
||||
"InteractionType": "Interact",
|
||||
"Comment": "Ponderous Mathematician",
|
||||
"$.0": "[5]",
|
||||
"$.1": "QuestVariables if done after [4]: 5 0 0 0 206 0"
|
||||
},
|
||||
{
|
||||
@ -131,6 +138,7 @@
|
||||
"InteractionType": "Interact",
|
||||
"Comment": "Despondent Engineer",
|
||||
"Mount": true,
|
||||
"$.0": "[6]",
|
||||
"$.1": "QuestVariables if done after [5]: 6 0 0 0 238 0"
|
||||
},
|
||||
{
|
||||
@ -143,6 +151,8 @@
|
||||
"TerritoryId": 956,
|
||||
"InteractionType": "Interact",
|
||||
"Comment": "Skeptical Researcher",
|
||||
"Mount": true,
|
||||
"$.0": "[7]",
|
||||
"$.1": "QuestVariables if done after [6]: 7 0 0 0 239 0"
|
||||
},
|
||||
{
|
||||
@ -154,7 +164,9 @@
|
||||
},
|
||||
"TerritoryId": 956,
|
||||
"InteractionType": "Interact",
|
||||
"Comment": "Anxious Engineer"
|
||||
"Comment": "Anxious Engineer",
|
||||
"$.0": "[8]",
|
||||
"$.2": "QuestVariables if done first: 1 0 0 0 16 0"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -40,6 +40,7 @@
|
||||
},
|
||||
"TerritoryId": 956,
|
||||
"InteractionType": "WalkTo",
|
||||
"Mount": true,
|
||||
"DisableNavmesh": true
|
||||
},
|
||||
{
|
||||
|
@ -94,14 +94,22 @@
|
||||
},
|
||||
{
|
||||
"Position": {
|
||||
"X": -118.62926,
|
||||
"Y": -22.071072,
|
||||
"Z": 681.35846
|
||||
"X": -120.48093,
|
||||
"Y": -21.96263,
|
||||
"Z": 685.2332
|
||||
},
|
||||
"TerritoryId": 956,
|
||||
"InteractionType": "ShouldBeAJump",
|
||||
"InteractionType": "Jump",
|
||||
"DisableNavmesh": true,
|
||||
"Comment": "Navmesh can't jump"
|
||||
"JumpDestination": {
|
||||
"Position": {
|
||||
"X": -124.55376,
|
||||
"Y": -19.659834,
|
||||
"Z": 686.864
|
||||
},
|
||||
"StopDistance": 0.5,
|
||||
"DelaySeconds": 0.25
|
||||
}
|
||||
},
|
||||
{
|
||||
"DataId": 2011986,
|
||||
@ -112,7 +120,8 @@
|
||||
},
|
||||
"TerritoryId": 956,
|
||||
"InteractionType": "AttuneAetherCurrent",
|
||||
"AetherCurrentId": 2818317
|
||||
"AetherCurrentId": 2818317,
|
||||
"DisableNavmesh": true
|
||||
},
|
||||
{
|
||||
"Position": {
|
||||
@ -122,6 +131,7 @@
|
||||
},
|
||||
"TerritoryId": 956,
|
||||
"InteractionType": "WalkTo",
|
||||
"Mount": true,
|
||||
"DisableNavmesh": true
|
||||
},
|
||||
{
|
||||
|
@ -28,7 +28,8 @@
|
||||
},
|
||||
"AetheryteShortcut": "Labyrinthos - Sharlayan Hamlet",
|
||||
"TerritoryId": 956,
|
||||
"InteractionType": "WalkTo"
|
||||
"InteractionType": "WalkTo",
|
||||
"Mount": true
|
||||
},
|
||||
{
|
||||
"DataId": 2012226,
|
||||
@ -98,6 +99,7 @@
|
||||
"Y": -191.11913,
|
||||
"Z": 301.71655
|
||||
},
|
||||
"StopDistance": 7,
|
||||
"TerritoryId": 956,
|
||||
"InteractionType": "Interact"
|
||||
}
|
||||
@ -113,7 +115,8 @@
|
||||
"Z": 301.63266
|
||||
},
|
||||
"TerritoryId": 956,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"Comment": "TODO Should cancel navmesh if condition is [OccupiedInCutsceneEvent OR BetweenAreas]; then verify next marker distance"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -36,15 +36,9 @@
|
||||
"Sequence": 2,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2012742,
|
||||
"Position": {
|
||||
"X": -238.26965,
|
||||
"Y": -221.51526,
|
||||
"Z": 341.29846
|
||||
},
|
||||
"TerritoryId": 956,
|
||||
"InteractionType": "Duty",
|
||||
"Comment": "Aitiascope"
|
||||
"ContentFinderConditionId": 786
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -52,14 +46,9 @@
|
||||
"Sequence": 4,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2012230,
|
||||
"Position": {
|
||||
"X": 99.95956,
|
||||
"Y": -2.384186E-07,
|
||||
"Z": 99.85896
|
||||
},
|
||||
"TerritoryId": 1030,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Duty",
|
||||
"ContentFinderConditionId": 790
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -24,15 +24,9 @@
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2012370,
|
||||
"Position": {
|
||||
"X": -3.1281738,
|
||||
"Y": 637.07935,
|
||||
"Z": -9.079163
|
||||
},
|
||||
"TerritoryId": 960,
|
||||
"InteractionType": "Duty",
|
||||
"Comment": "The Dead Ends"
|
||||
"ContentFinderConditionId": 792
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -40,16 +34,9 @@
|
||||
"Sequence": 3,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2012371,
|
||||
"Position": {
|
||||
"X": 100,
|
||||
"Y": 0,
|
||||
"Z": 106
|
||||
},
|
||||
"StopDistance": 5,
|
||||
"TerritoryId": 1029,
|
||||
"InteractionType": "Duty",
|
||||
"Comment": "The Final Day"
|
||||
"ContentFinderConditionId": 796
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -24,15 +24,9 @@
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2012839,
|
||||
"Position": {
|
||||
"X": -269.55066,
|
||||
"Y": 0.10675049,
|
||||
"Z": 610.65076
|
||||
},
|
||||
"TerritoryId": 957,
|
||||
"InteractionType": "Duty",
|
||||
"Comment": "Alzadaal's Legacy"
|
||||
"ContentFinderConditionId": 844
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -68,15 +68,9 @@
|
||||
"Sequence": 4,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2013041,
|
||||
"Position": {
|
||||
"X": 110.06323,
|
||||
"Y": -350.02673,
|
||||
"Z": -89.463684
|
||||
},
|
||||
"TerritoryId": 1056,
|
||||
"InteractionType": "Duty",
|
||||
"Comment": "Fell Court of Troia"
|
||||
"ContentFinderConditionId": 869
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -37,16 +37,9 @@
|
||||
"Sequence": 3,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2013052,
|
||||
"Position": {
|
||||
"X": 99.77076,
|
||||
"Y": -19,
|
||||
"Z": 176.985
|
||||
},
|
||||
"StopDistance": 5,
|
||||
"TerritoryId": 1092,
|
||||
"InteractionType": "Duty",
|
||||
"Comment": "Storm's Crown"
|
||||
"ContentFinderConditionId": 870
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -53,16 +53,10 @@
|
||||
"Sequence": 3,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2013225,
|
||||
"Position": {
|
||||
"X": 469.16907,
|
||||
"Y": -18.204102,
|
||||
"Z": 717.7081
|
||||
},
|
||||
"TerritoryId": 958,
|
||||
"StopDistance": 5,
|
||||
"InteractionType": "Duty",
|
||||
"Comment": "Lapis Manalis"
|
||||
"Comment": "Lapis Manalis",
|
||||
"ContentFinderConditionId": 896
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -51,15 +51,9 @@
|
||||
"Sequence": 3,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2013240,
|
||||
"Position": {
|
||||
"X": 657.3739,
|
||||
"Y": -180.7837,
|
||||
"Z": 45.63965
|
||||
},
|
||||
"TerritoryId": 1125,
|
||||
"InteractionType": "Duty",
|
||||
"Comment": "Mount Ordeals"
|
||||
"ContentFinderConditionId": 886
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -132,15 +132,9 @@
|
||||
"Sequence": 7,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2013359,
|
||||
"Position": {
|
||||
"X": 134.667,
|
||||
"Y": -16.147,
|
||||
"Z": 238.0937
|
||||
},
|
||||
"TerritoryId": 962,
|
||||
"InteractionType": "Duty",
|
||||
"Comment": "The Aetherfont"
|
||||
"ContentFinderConditionId": 822
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -36,15 +36,9 @@
|
||||
"Sequence": 2,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2013364,
|
||||
"Position": {
|
||||
"X": 99.99231,
|
||||
"Y": 0.015197754,
|
||||
"Z": 101.823364
|
||||
},
|
||||
"TerritoryId": 1159,
|
||||
"InteractionType": "Duty",
|
||||
"Comment": "The Voidcast Dais"
|
||||
"ContentFinderConditionId": 949
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -21,15 +21,9 @@
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2013410,
|
||||
"Position": {
|
||||
"X": 24.338135,
|
||||
"Y": 56.65674,
|
||||
"Z": 439.96326
|
||||
},
|
||||
"TerritoryId": 1162,
|
||||
"InteractionType": "Duty",
|
||||
"Comment": "The Lunar Subterrane"
|
||||
"ContentFinderConditionId": 823
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -52,15 +46,9 @@
|
||||
"Sequence": 5,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2013411,
|
||||
"Position": {
|
||||
"X": 100.0275,
|
||||
"Y": 0,
|
||||
"Z": 106.3549
|
||||
},
|
||||
"TerritoryId": 1181,
|
||||
"InteractionType": "Duty",
|
||||
"Comment": "The Abyssal Fracture"
|
||||
"ContentFinderConditionId": 964
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -7,16 +7,9 @@
|
||||
"Sequence": 7,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2010235,
|
||||
"Position": {
|
||||
"X": -426.9627,
|
||||
"Y": -229.08374,
|
||||
"Z": 858.09106
|
||||
},
|
||||
"StopDistance": 5,
|
||||
"TerritoryId": 818,
|
||||
"InteractionType": "Duty",
|
||||
"Comment": "Amaurot"
|
||||
"ContentFinderConditionId": 652
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -24,16 +17,9 @@
|
||||
"Sequence": 9,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2010236,
|
||||
"Position": {
|
||||
"X": 100.0382,
|
||||
"Y": 4.768372E-07,
|
||||
"Z": 106.0076
|
||||
},
|
||||
"StopDistance": 5,
|
||||
"TerritoryId": 881,
|
||||
"InteractionType": "Duty",
|
||||
"Comment": "The Dying Gasp"
|
||||
"ContentFinderConditionId": 687
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -47,15 +47,9 @@
|
||||
"Sequence": 2,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2010808,
|
||||
"Position": {
|
||||
"X": -123.55237,
|
||||
"Y": -0.7172241,
|
||||
"Z": 647.6997
|
||||
},
|
||||
"TerritoryId": 813,
|
||||
"InteractionType": "Duty",
|
||||
"Comment": "Grand Cosmos"
|
||||
"ContentFinderConditionId": 692
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -38,16 +38,9 @@
|
||||
"Sequence": 2,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2010952,
|
||||
"Position": {
|
||||
"X": -539.0652,
|
||||
"Y": 63.97181,
|
||||
"Z": 738.8608
|
||||
},
|
||||
"StopDistance": 5,
|
||||
"TerritoryId": 814,
|
||||
"InteractionType": "Duty",
|
||||
"Comment": "Anamnesis Anyder"
|
||||
"ContentFinderConditionId": 714
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -52,15 +52,9 @@
|
||||
"Sequence": 3,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2011101,
|
||||
"Position": {
|
||||
"X": 60.04639,
|
||||
"Y": 82.82986,
|
||||
"Z": 1.940211
|
||||
},
|
||||
"TerritoryId": 820,
|
||||
"InteractionType": "Duty",
|
||||
"Comment": "The Heroes' Gauntlet"
|
||||
"ContentFinderConditionId": 737
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -21,16 +21,9 @@
|
||||
"Sequence": 1,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2011103,
|
||||
"Position": {
|
||||
"X": 100,
|
||||
"Y": 4.208088E-05,
|
||||
"Z": 112.5434
|
||||
},
|
||||
"StopDistance": 5,
|
||||
"TerritoryId": 931,
|
||||
"InteractionType": "Duty",
|
||||
"Comment": "The Seat of Sacrifice"
|
||||
"ContentFinderConditionId": 738
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -80,15 +80,9 @@
|
||||
"Sequence": 4,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2011334,
|
||||
"Position": {
|
||||
"X": 384.32886,
|
||||
"Y": 75.48633,
|
||||
"Z": -218.00574
|
||||
},
|
||||
"TerritoryId": 399,
|
||||
"InteractionType": "Duty",
|
||||
"Comment": "Matoya's Relict"
|
||||
"ContentFinderConditionId": 746
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -57,15 +57,9 @@
|
||||
"Sequence": 3,
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 2011521,
|
||||
"Position": {
|
||||
"X": -24.368713,
|
||||
"Y": 83.17688,
|
||||
"Z": 12.893799
|
||||
},
|
||||
"TerritoryId": 130,
|
||||
"InteractionType": "Duty",
|
||||
"Comment": "Paglth'an"
|
||||
"ContentFinderConditionId": 777
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -105,6 +105,7 @@
|
||||
"WaitForManualProgress",
|
||||
"Duty",
|
||||
"SinglePlayerDuty",
|
||||
"Jump",
|
||||
"ShouldBeAJump",
|
||||
"Instruction"
|
||||
]
|
||||
@ -375,6 +376,52 @@
|
||||
"description": "The Item to use",
|
||||
"exclusiveMinimum": 0
|
||||
},
|
||||
"JumpDestination": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"Position": {
|
||||
"type": "object",
|
||||
"description": "Position to try reaching after the jump",
|
||||
"properties": {
|
||||
"X": {
|
||||
"type": "number"
|
||||
},
|
||||
"Y": {
|
||||
"type": "number"
|
||||
},
|
||||
"Z": {
|
||||
"type": "number"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"X",
|
||||
"Y",
|
||||
"Z"
|
||||
]
|
||||
},
|
||||
"StopDistance": {
|
||||
"type": [
|
||||
"number",
|
||||
"null"
|
||||
],
|
||||
"description": "Set if pathfinding should stop closer or further away from the default stop distance",
|
||||
"exclusiveMinimum": 0
|
||||
},
|
||||
"DelaySeconds": {
|
||||
"type": [
|
||||
"number",
|
||||
"null"
|
||||
]
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"Position"
|
||||
]
|
||||
},
|
||||
"ContentFinderConditionId": {
|
||||
"type": "number",
|
||||
"exclusiveMinimum": 0
|
||||
},
|
||||
"SkipIf": {
|
||||
"type": "array",
|
||||
"description": "TODO Not implemented",
|
||||
|
@ -53,7 +53,7 @@ public sealed class QuestionablePlugin : IDalamudPlugin
|
||||
_movementController =
|
||||
new MovementController(navmeshIpc, clientState, _gameFunctions, condition, pluginLog);
|
||||
_questController = new QuestController(pluginInterface, dataManager, _clientState, _gameFunctions,
|
||||
_movementController, pluginLog, condition, chatGui, aetheryteData, lifestreamIpc);
|
||||
_movementController, pluginLog, condition, chatGui, framework, aetheryteData, lifestreamIpc);
|
||||
_windowSystem.AddWindow(new DebugWindow(_movementController, _questController, _gameFunctions, clientState,
|
||||
targetManager));
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user