using Content.Server.AI.WorldState; using Content.Server.AI.WorldState.States; using Robust.Shared.GameObjects; using Robust.Shared.IoC; namespace Content.Server.AI.Utility.Considerations.Movement { public sealed class TargetDistanceCon : Consideration { protected override float GetScore(Blackboard context) { var self = context.GetState().GetValue(); var target = context.GetState().GetValue(); if (target == null || (!IoCManager.Resolve().EntityExists(target.Uid) ? EntityLifeStage.Deleted : IoCManager.Resolve().GetComponent(target.Uid).EntityLifeStage) >= EntityLifeStage.Deleted || IoCManager.Resolve().GetComponent(target.Uid).GridID != (self != null ? IoCManager.Resolve().GetComponent(self.Uid) : null).GridID) { return 0.0f; } // Anything further than 100 tiles gets clamped return (IoCManager.Resolve().GetComponent(target.Uid).Coordinates.Position - IoCManager.Resolve().GetComponent(self.Uid).Coordinates.Position).Length / 100; } } }