Some jumping, open DF for duties

cacahuetes-minorupdate1
Liza 2024-06-01 14:30:20 +02:00
parent f9a4008564
commit a5bb4f15cb
Signed by: liza
GPG Key ID: 7199F8D727D55F67
45 changed files with 259 additions and 247 deletions

View File

@ -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

View File

@ -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;

View File

@ -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})");
}
}

View File

@ -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" },
};
}

View File

@ -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>

View 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; }
}

View File

@ -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>();
}

View File

@ -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
}
]
},

View File

@ -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
}
]
},

View File

@ -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"
}
]

View File

@ -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
}
]
},

View File

@ -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"
}
]
},

View File

@ -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
},
{

View File

@ -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,

View File

@ -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": {

View File

@ -114,7 +114,8 @@
"Z": -197.54811
},
"TerritoryId": 961,
"InteractionType": "WalkTo"
"InteractionType": "WalkTo",
"Mount": true
},
{
"DataId": 1040117,

View File

@ -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,

View File

@ -96,7 +96,7 @@
"Y": 294.93375,
"Z": -559.62463
},
"StopDistance": 5,
"StopDistance": 6,
"TerritoryId": 961,
"InteractionType": "Interact"
}

View File

@ -44,6 +44,7 @@
},
"TerritoryId": 961,
"InteractionType": "WalkTo",
"Mount": true,
"DisableNavmesh": true
},
{

View File

@ -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
}
]
},

View File

@ -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"
]
}

View File

@ -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,

View File

@ -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"
}
]
},

View File

@ -40,6 +40,7 @@
},
"TerritoryId": 956,
"InteractionType": "WalkTo",
"Mount": true,
"DisableNavmesh": true
},
{

View File

@ -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
},
{

View File

@ -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"
}
]
},

View File

@ -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
}
]
},

View File

@ -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
}
]
},

View File

@ -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
}
]
},

View File

@ -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
}
]
},

View File

@ -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
}
]
},

View File

@ -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
}
]
},

View File

@ -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
}
]
},

View File

@ -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
}
]
},

View File

@ -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
}
]
},

View File

@ -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
}
]
},

View File

@ -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
}
]
},

View File

@ -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
}
]
},

View File

@ -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
}
]
}

View File

@ -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
}
]
},

View File

@ -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
}
]
},

View File

@ -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
}
]
},

View File

@ -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
}
]
},

View File

@ -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",

View File

@ -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));