using Content.Shared.Mind; using Robust.Shared.Player; using Robust.Shared.Toolshed; using Robust.Shared.Toolshed.Errors; using Robust.Shared.Toolshed.Syntax; namespace Content.Server.Mind.Toolshed; /// /// Contains various mind-manipulation commands like getting minds, controlling mobs, etc. /// [ToolshedCommand] public sealed class MindCommand : ToolshedCommand { private SharedMindSystem? _mind; [CommandImplementation("get")] public MindComponent? Get([PipedArgument] ICommonSession session) { _mind ??= GetSys(); return _mind.TryGetMind(session, out _, out var mind) ? mind : null; } [CommandImplementation("get")] public MindComponent? Get([PipedArgument] EntityUid ent) { _mind ??= GetSys(); return _mind.TryGetMind(ent, out _, out var mind) ? mind : null; } [CommandImplementation("control")] public EntityUid Control(IInvocationContext ctx, [PipedArgument] EntityUid target, ICommonSession player) { _mind ??= GetSys(); if (!_mind.TryGetMind(player, out var mindId, out var mind)) { ctx.ReportError(new SessionHasNoEntityError(player)); return target; } _mind.TransferTo(mindId, target, mind: mind); return target; } }