if (Destination == null)
throw new InvalidOperationException("Destination is null");
+ if (DateTime.Now - MovementStartedAt <= TimeSpan.FromSeconds(5))
+ return;
+
var nextWaypoint = navPoints.FirstOrDefault();
if (nextWaypoint != default)
{
if (requiresMovement)
PrepareMovementIfNeeded();
- if (Task.Mount == true || Task.Fly)
+ if (Task.Mount == true)
{
var mountTask = new Mount.MountTask(Task.TerritoryId, Mount.EMountIf.Always);
_mountBeforeMovement = (_serviceProvider.GetRequiredService<Mount.MountExecutor>(), mountTask);
: Mount.EMountIf.AwayFromPosition;
var mountTask = new Mount.MountTask(Task.TerritoryId, mountIf, _destination);
DateTime retryAt = DateTime.Now;
- _mountDuringMovement = (_serviceProvider.GetRequiredService<Mount.MountExecutor>(), mountTask);
+ (Mount.MountExecutor Executor, Mount.MountTask)? move;
+
if (_mountEvaluator.EvaluateMountState(mountTask, true, ref retryAt) != Mount.MountResult.DontMount)
- _mountDuringMovement.Value.Executor.Start(mountTask);
+ {
+ move = (_serviceProvider.GetRequiredService<Mount.MountExecutor>(), mountTask);
+ move.Value.Executor.Start(mountTask);
+ }
+ else
+ move = null;
+
+ if (Task.Fly)
+ _mountBeforeMovement = move;
else
- _mountDuringMovement = null;
+ _mountDuringMovement = move;
}
}