1
0

MindCommand.cs 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. using Content.Shared.Mind;
  2. using Robust.Shared.Player;
  3. using Robust.Shared.Toolshed;
  4. using Robust.Shared.Toolshed.Errors;
  5. using Robust.Shared.Toolshed.Syntax;
  6. namespace Content.Server.Mind.Toolshed;
  7. /// <summary>
  8. /// Contains various mind-manipulation commands like getting minds, controlling mobs, etc.
  9. /// </summary>
  10. [ToolshedCommand]
  11. public sealed class MindCommand : ToolshedCommand
  12. {
  13. private SharedMindSystem? _mind;
  14. [CommandImplementation("get")]
  15. public MindComponent? Get([PipedArgument] ICommonSession session)
  16. {
  17. _mind ??= GetSys<SharedMindSystem>();
  18. return _mind.TryGetMind(session, out _, out var mind) ? mind : null;
  19. }
  20. [CommandImplementation("get")]
  21. public MindComponent? Get([PipedArgument] EntityUid ent)
  22. {
  23. _mind ??= GetSys<SharedMindSystem>();
  24. return _mind.TryGetMind(ent, out _, out var mind) ? mind : null;
  25. }
  26. [CommandImplementation("control")]
  27. public EntityUid Control(IInvocationContext ctx, [PipedArgument] EntityUid target, ICommonSession player)
  28. {
  29. _mind ??= GetSys<SharedMindSystem>();
  30. if (!_mind.TryGetMind(player, out var mindId, out var mind))
  31. {
  32. ctx.ReportError(new SessionHasNoEntityError(player));
  33. return target;
  34. }
  35. _mind.TransferTo(mindId, target, mind: mind);
  36. return target;
  37. }
  38. }