diff --git a/Content.Server/NPC/HTN/PrimitiveTasks/Operators/PickAccessibleComponentOperator.cs b/Content.Server/NPC/HTN/PrimitiveTasks/Operators/PickAccessibleComponentOperator.cs index b76a6ea4f4..4f87ea9354 100644 --- a/Content.Server/NPC/HTN/PrimitiveTasks/Operators/PickAccessibleComponentOperator.cs +++ b/Content.Server/NPC/HTN/PrimitiveTasks/Operators/PickAccessibleComponentOperator.cs @@ -77,6 +77,9 @@ public sealed class PickAccessibleComponentOperator : HTNOperator // TODO: God the path api sucks PLUS I need some fast way to get this. var job = _path.RequestPath(owner, target.Owner, CancellationToken.None); + if (job == null) + continue; + await job.AsTask; if (job.Result == null || !_entManager.TryGetComponent(target.Owner, out var targetXform)) diff --git a/Content.Server/NPC/Pathfinding/PathfindingSystem.cs b/Content.Server/NPC/Pathfinding/PathfindingSystem.cs index 91d379f7de..73be3ba3c3 100644 --- a/Content.Server/NPC/Pathfinding/PathfindingSystem.cs +++ b/Content.Server/NPC/Pathfinding/PathfindingSystem.cs @@ -37,7 +37,7 @@ namespace Content.Server.NPC.Pathfinding return job; } - public Job> RequestPath(EntityUid source, EntityUid target, CancellationToken cancellationToken) + public Job>? RequestPath(EntityUid source, EntityUid target, CancellationToken cancellationToken) { var collisionMask = 0; @@ -46,18 +46,17 @@ namespace Content.Server.NPC.Pathfinding collisionMask = body.CollisionMask; } - var start = TileRef.Zero; - var end = TileRef.Zero; - - if (TryComp(source, out var xform) && - _mapManager.TryGetGrid(xform.GridUid, out var grid) && - TryComp(target, out var targetXform) && - _mapManager.TryGetGrid(targetXform.GridUid, out var targetGrid)) + if (!TryComp(source, out var xform) || + !_mapManager.TryGetGrid(xform.GridUid, out var grid) || + !TryComp(target, out var targetXform) || + !_mapManager.TryGetGrid(targetXform.GridUid, out var targetGrid)) { - start = grid.GetTileRef(xform.Coordinates); - end = grid.GetTileRef(targetXform.Coordinates); + return null; } + var start = grid.GetTileRef(xform.Coordinates); + var end = targetGrid.GetTileRef(targetXform.Coordinates); + var args = new PathfindingArgs(source, _access.FindAccessTags(source), collisionMask, start, end); var startNode = GetNode(start);