using System.Collections.Generic; using Content.Server.AI.Components; using Content.Shared.Damage; using JetBrains.Annotations; using Robust.Server.Player; using Robust.Shared.GameObjects; using Robust.Shared.IoC; 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(); if (!Owner.TryGetComponent(out AiControllerComponent? controller)) { return result; } var playerManager = IoCManager.Resolve(); var nearbyPlayers = playerManager.GetPlayersInRange(Owner.Transform.Coordinates, (int) controller.VisionRadius); foreach (var player in nearbyPlayers) { if (player.AttachedEntity == null) { continue; } if (player.AttachedEntity != Owner && player.AttachedEntity.HasComponent()) { result.Add(player.AttachedEntity); } } return result; } } }