Bandaid medibots (#11718)
This commit is contained in:
@@ -19,4 +19,9 @@ public enum PathFlags : byte
|
||||
/// Can stuff like walls be broken.
|
||||
/// </summary>
|
||||
Smashing = 1 << 2,
|
||||
|
||||
/// <summary>
|
||||
/// Can we open stuff that requires interaction (e.g. click-open doors).
|
||||
/// </summary>
|
||||
Interact = 1 << 3,
|
||||
}
|
||||
|
||||
@@ -58,7 +58,7 @@ public sealed partial class PathfindingSystem
|
||||
|
||||
// TODO: Handling power + door prying
|
||||
// Door we should be able to open
|
||||
if (isDoor && !isAccess)
|
||||
if (isDoor && !isAccess && (request.Flags & PathFlags.Interact) != 0x0)
|
||||
{
|
||||
modifier += 0.5f;
|
||||
}
|
||||
|
||||
@@ -280,6 +280,21 @@ namespace Content.Server.NPC.Pathfinding
|
||||
return distance;
|
||||
}
|
||||
|
||||
public async Task<PathResultEvent> GetPath(
|
||||
EntityUid entity,
|
||||
EntityUid target,
|
||||
float range,
|
||||
CancellationToken cancelToken,
|
||||
PathFlags flags = PathFlags.None)
|
||||
{
|
||||
if (!TryComp<TransformComponent>(entity, out var xform) ||
|
||||
!TryComp<TransformComponent>(target, out var targetXform))
|
||||
return new PathResultEvent(PathResult.NoPath, new Queue<PathPoly>());
|
||||
|
||||
var request = GetRequest(entity, xform.Coordinates, targetXform.Coordinates, range, cancelToken, flags);
|
||||
return await GetPath(request);
|
||||
}
|
||||
|
||||
public async Task<PathResultEvent> GetPath(
|
||||
EntityUid entity,
|
||||
EntityCoordinates start,
|
||||
@@ -385,16 +400,21 @@ namespace Content.Server.NPC.Pathfinding
|
||||
{
|
||||
var flags = PathFlags.None;
|
||||
|
||||
if (blackboard.TryGetValue<bool>(NPCBlackboard.NavPry, out var pry))
|
||||
if (blackboard.TryGetValue<bool>(NPCBlackboard.NavPry, out var pry) && pry)
|
||||
{
|
||||
flags |= PathFlags.Prying;
|
||||
}
|
||||
|
||||
if (blackboard.TryGetValue<bool>(NPCBlackboard.NavSmash, out var smash))
|
||||
if (blackboard.TryGetValue<bool>(NPCBlackboard.NavSmash, out var smash) && smash)
|
||||
{
|
||||
flags |= PathFlags.Smashing;
|
||||
}
|
||||
|
||||
if (blackboard.TryGetValue<bool>(NPCBlackboard.NavInteract, out var interact) && interact)
|
||||
{
|
||||
flags |= PathFlags.Interact;
|
||||
}
|
||||
|
||||
return flags;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user