Attempt follow path for 'Tracks in the Snow'
This commit is contained in:
parent
e5507b8986
commit
7dff411947
@ -297,6 +297,9 @@ public class QuestSourceGenerator : ISourceGenerator
|
|||||||
Assignment(nameof(QuestStep.TargetTerritoryId), step.TargetTerritoryId,
|
Assignment(nameof(QuestStep.TargetTerritoryId), step.TargetTerritoryId,
|
||||||
emptyStep.TargetTerritoryId)
|
emptyStep.TargetTerritoryId)
|
||||||
.AsSyntaxNodeOrToken(),
|
.AsSyntaxNodeOrToken(),
|
||||||
|
Assignment(nameof(QuestStep.DelaySecondsAtStart), step.DelaySecondsAtStart,
|
||||||
|
emptyStep.DelaySecondsAtStart)
|
||||||
|
.AsSyntaxNodeOrToken(),
|
||||||
Assignment(nameof(QuestStep.Disabled), step.Disabled, emptyStep.Disabled)
|
Assignment(nameof(QuestStep.Disabled), step.Disabled, emptyStep.Disabled)
|
||||||
.AsSyntaxNodeOrToken(),
|
.AsSyntaxNodeOrToken(),
|
||||||
Assignment(nameof(QuestStep.DisableNavmesh), step.DisableNavmesh,
|
Assignment(nameof(QuestStep.DisableNavmesh), step.DisableNavmesh,
|
||||||
|
@ -68,7 +68,7 @@
|
|||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
32
|
-32
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -105,7 +105,8 @@
|
|||||||
"Z": -209.40958
|
"Z": -209.40958
|
||||||
},
|
},
|
||||||
"TerritoryId": 962,
|
"TerritoryId": 962,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "WalkTo",
|
||||||
|
"Comment": "Should auto-trigger the next step once Alisaie is here"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -127,6 +127,15 @@
|
|||||||
"InteractionType": "AttuneAetherCurrent",
|
"InteractionType": "AttuneAetherCurrent",
|
||||||
"AetherCurrentId": 2818314
|
"AetherCurrentId": 2818314
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 280.38452,
|
||||||
|
"Y": 216.34708,
|
||||||
|
"Z": -823.3921
|
||||||
|
},
|
||||||
|
"TerritoryId": 956,
|
||||||
|
"InteractionType": "WalkTo"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1038701,
|
"DataId": 1038701,
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -136,7 +145,8 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 956,
|
"TerritoryId": 956,
|
||||||
"InteractionType": "UseItem",
|
"InteractionType": "UseItem",
|
||||||
"ItemId": 2003129
|
"ItemId": 2003129,
|
||||||
|
"Mount": false
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -152,6 +152,149 @@
|
|||||||
{
|
{
|
||||||
"Sequence": 6,
|
"Sequence": 6,
|
||||||
"Steps": [
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1038845,
|
||||||
|
"Position": {
|
||||||
|
"X": 156.66682,
|
||||||
|
"Y": -18.078814,
|
||||||
|
"Z": 361.58972
|
||||||
|
},
|
||||||
|
"TerritoryId": 958,
|
||||||
|
"InteractionType": "WaitForNpcAtPosition",
|
||||||
|
"NpcWaitDistance": 5,
|
||||||
|
"StopDistance": 100,
|
||||||
|
"Mount": false,
|
||||||
|
"Sprint": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 204.82344,
|
||||||
|
"Y": -19.113703,
|
||||||
|
"Z": 373.52936
|
||||||
|
},
|
||||||
|
"TerritoryId": 958,
|
||||||
|
"InteractionType": "WalkTo",
|
||||||
|
"Mount": false,
|
||||||
|
"Sprint": false,
|
||||||
|
"DelaySecondsAtStart": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 1038845,
|
||||||
|
"Position": {
|
||||||
|
"X": 232.28406,
|
||||||
|
"Y": -16.777779,
|
||||||
|
"Z": 339.1168
|
||||||
|
},
|
||||||
|
"TerritoryId": 958,
|
||||||
|
"InteractionType": "WaitForNpcAtPosition",
|
||||||
|
"NpcWaitDistance": 5,
|
||||||
|
"StopDistance": 100,
|
||||||
|
"Mount": false,
|
||||||
|
"Sprint": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 272.79572,
|
||||||
|
"Y": -13.174152,
|
||||||
|
"Z": 317.53406
|
||||||
|
},
|
||||||
|
"TerritoryId": 958,
|
||||||
|
"InteractionType": "WalkTo",
|
||||||
|
"Mount": false,
|
||||||
|
"Sprint": false,
|
||||||
|
"DelaySecondsAtStart": 8
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 1038845,
|
||||||
|
"Position": {
|
||||||
|
"X": 287.9112,
|
||||||
|
"Y": -11.811615,
|
||||||
|
"Z": 292.6589
|
||||||
|
},
|
||||||
|
"TerritoryId": 958,
|
||||||
|
"InteractionType": "WaitForNpcAtPosition",
|
||||||
|
"NpcWaitDistance": 5,
|
||||||
|
"StopDistance": 100,
|
||||||
|
"Mount": false,
|
||||||
|
"Sprint": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 323.9364,
|
||||||
|
"Y": -10.539692,
|
||||||
|
"Z": 254.19264
|
||||||
|
},
|
||||||
|
"TerritoryId": 958,
|
||||||
|
"InteractionType": "WalkTo",
|
||||||
|
"Mount": false,
|
||||||
|
"Sprint": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 1038845,
|
||||||
|
"Position": {
|
||||||
|
"X": 354.5913,
|
||||||
|
"Y": -5.5008125,
|
||||||
|
"Z": 245.22939
|
||||||
|
},
|
||||||
|
"TerritoryId": 958,
|
||||||
|
"InteractionType": "WaitForNpcAtPosition",
|
||||||
|
"NpcWaitDistance": 5,
|
||||||
|
"StopDistance": 100,
|
||||||
|
"Mount": false,
|
||||||
|
"Sprint": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 354.71964,
|
||||||
|
"Y": -2.2201555,
|
||||||
|
"Z": 233.99152
|
||||||
|
},
|
||||||
|
"TerritoryId": 958,
|
||||||
|
"InteractionType": "WalkTo",
|
||||||
|
"Mount": false,
|
||||||
|
"Sprint": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 1038845,
|
||||||
|
"Position": {
|
||||||
|
"X": 382.75116,
|
||||||
|
"Y": 2.7549856,
|
||||||
|
"Z": 226.49387
|
||||||
|
},
|
||||||
|
"TerritoryId": 958,
|
||||||
|
"InteractionType": "WaitForNpcAtPosition",
|
||||||
|
"NpcWaitDistance": 5,
|
||||||
|
"StopDistance": 40,
|
||||||
|
"Mount": false,
|
||||||
|
"Sprint": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 1038845,
|
||||||
|
"Position": {
|
||||||
|
"X": 408.44272,
|
||||||
|
"Y": 4.965298,
|
||||||
|
"Z": 208.22794
|
||||||
|
},
|
||||||
|
"TerritoryId": 958,
|
||||||
|
"InteractionType": "WalkTo",
|
||||||
|
"StopDistance": 45,
|
||||||
|
"Mount": false,
|
||||||
|
"Sprint": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 1038845,
|
||||||
|
"Position": {
|
||||||
|
"X": 426.39246,
|
||||||
|
"Y": 5.348692,
|
||||||
|
"Z": 194.86263
|
||||||
|
},
|
||||||
|
"TerritoryId": 958,
|
||||||
|
"InteractionType": "WaitForNpcAtPosition",
|
||||||
|
"NpcWaitDistance": 5,
|
||||||
|
"StopDistance": 100,
|
||||||
|
"Mount": false,
|
||||||
|
"Sprint": false
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1038846,
|
"DataId": 1038846,
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -160,7 +303,8 @@
|
|||||||
"Z": 159.10571
|
"Z": 159.10571
|
||||||
},
|
},
|
||||||
"TerritoryId": 958,
|
"TerritoryId": 958,
|
||||||
"InteractionType": "WalkTo"
|
"InteractionType": "WalkTo",
|
||||||
|
"Mount": false
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -387,6 +387,13 @@
|
|||||||
"minItems": 6,
|
"minItems": 6,
|
||||||
"maxItems": 6
|
"maxItems": 6
|
||||||
},
|
},
|
||||||
|
"DelaySecondsAtStart": {
|
||||||
|
"description": "Time to wait before starting",
|
||||||
|
"type": [
|
||||||
|
"number",
|
||||||
|
"null"
|
||||||
|
]
|
||||||
|
},
|
||||||
"Comment": {
|
"Comment": {
|
||||||
"type": "string"
|
"type": "string"
|
||||||
}
|
}
|
||||||
|
@ -20,6 +20,7 @@ public sealed class QuestStep
|
|||||||
public float? NpcWaitDistance { get; set; }
|
public float? NpcWaitDistance { get; set; }
|
||||||
public ushort TerritoryId { get; set; }
|
public ushort TerritoryId { get; set; }
|
||||||
public ushort? TargetTerritoryId { get; set; }
|
public ushort? TargetTerritoryId { get; set; }
|
||||||
|
public float? DelaySecondsAtStart { get; set; }
|
||||||
|
|
||||||
public bool Disabled { get; set; }
|
public bool Disabled { get; set; }
|
||||||
public bool DisableNavmesh { get; set; }
|
public bool DisableNavmesh { get; set; }
|
||||||
|
35
Questionable/Controller/Steps/BaseFactory/WaitAtStart.cs
Normal file
35
Questionable/Controller/Steps/BaseFactory/WaitAtStart.cs
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
using System;
|
||||||
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
using Questionable.Controller.Steps.BaseTasks;
|
||||||
|
using Questionable.Model;
|
||||||
|
using Questionable.Model.V1;
|
||||||
|
|
||||||
|
namespace Questionable.Controller.Steps.BaseFactory;
|
||||||
|
|
||||||
|
internal static class WaitAtStart
|
||||||
|
{
|
||||||
|
internal sealed class Factory(IServiceProvider serviceProvider) : ITaskFactory
|
||||||
|
{
|
||||||
|
public ITask? CreateTask(Quest quest, QuestSequence sequence, QuestStep step)
|
||||||
|
{
|
||||||
|
if (step.DelaySecondsAtStart == null)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
return serviceProvider.GetRequiredService<WaitDelay>()
|
||||||
|
.With(TimeSpan.FromSeconds(step.DelaySecondsAtStart.Value));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal sealed class WaitDelay : AbstractDelayedTask
|
||||||
|
{
|
||||||
|
public ITask With(TimeSpan delay)
|
||||||
|
{
|
||||||
|
Delay = delay;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override bool StartInternal() => true;
|
||||||
|
|
||||||
|
public override string ToString() => $"Wait[S](seconds: {Delay.TotalSeconds})";
|
||||||
|
}
|
||||||
|
}
|
@ -4,7 +4,6 @@ namespace Questionable.Controller.Steps.BaseTasks;
|
|||||||
|
|
||||||
internal abstract class AbstractDelayedTask : ITask
|
internal abstract class AbstractDelayedTask : ITask
|
||||||
{
|
{
|
||||||
protected readonly TimeSpan Delay;
|
|
||||||
private DateTime _continueAt;
|
private DateTime _continueAt;
|
||||||
|
|
||||||
protected AbstractDelayedTask(TimeSpan delay)
|
protected AbstractDelayedTask(TimeSpan delay)
|
||||||
@ -12,6 +11,8 @@ internal abstract class AbstractDelayedTask : ITask
|
|||||||
Delay = delay;
|
Delay = delay;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected TimeSpan Delay { get; set; }
|
||||||
|
|
||||||
protected AbstractDelayedTask()
|
protected AbstractDelayedTask()
|
||||||
: this(TimeSpan.FromSeconds(5))
|
: this(TimeSpan.FromSeconds(5))
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user