using Content.Server.AI.Components; using Content.Shared.Damage; using JetBrains.Annotations; using Robust.Shared.Player; namespace Content.Server.AI.WorldState.States.Mobs { [UsedImplicitly] public sealed class NearbyPlayersState : CachedStateData> { public override string Name => "NearbyPlayers"; protected override List GetTrueValue() { var result = new List(); var entMan = IoCManager.Resolve(); if (!entMan.TryGetComponent(Owner, out AiControllerComponent? controller)) { return result; } var nearbyPlayers = Filter.Empty() .AddInRange(entMan.GetComponent(Owner).MapPosition, controller.VisionRadius) .Recipients; foreach (var player in nearbyPlayers) { if (player.AttachedEntity is not {Valid: true} playerEntity) { continue; } if (player.AttachedEntity != Owner && entMan.HasComponent(playerEntity)) { result.Add(playerEntity); } } return result; } } }