Bandaid medibots (#11718)

This commit is contained in:
metalgearsloth
2022-10-13 21:36:29 +11:00
committed by GitHub
parent 8e1d599656
commit fa59983bd9
11 changed files with 67 additions and 14 deletions

View File

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

View File

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

View File

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