using Content.Shared.Interaction; using Content.Shared.Teleportation.Systems; namespace Content.Server._CP14.PortalAutoLink; public sealed partial class CP14AutoLinkSystem : EntitySystem { [Dependency] private readonly LinkedEntitySystem _link = default!; [Dependency] private readonly IEntityManager _entityManager = default!; public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnMapInit); } private void OnMapInit(Entity autolink, ref MapInitEvent args) { TryAutoLink(autolink, out var otherLink); } public bool TryAutoLink(Entity autolink, out EntityUid? linkedEnt) { linkedEnt = null; var query = EntityQueryEnumerator(); while (query.MoveNext(out var uid, out var otherAutolink)) { if (autolink.Comp == otherAutolink) continue; if (autolink.Comp.AutoLinkKey == otherAutolink.AutoLinkKey) { if (_link.TryLink(autolink, uid, false)) { RemComp(uid); RemComp(autolink); return true; } } } return false; } }