| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- using Content.Server.Players;
- using Content.Shared.Administration;
- using Content.Shared.Mind;
- using Content.Shared.Mind.Components;
- using Content.Shared.Players;
- using Robust.Server.Player;
- using Robust.Shared.Console;
- namespace Content.Server.Administration.Commands
- {
- [AdminCommand(AdminFlags.Admin)]
- sealed class SetMindCommand : IConsoleCommand
- {
- [Dependency] private readonly IEntityManager _entManager = default!;
- public string Command => "setmind";
- public string Description => Loc.GetString("set-mind-command-description", ("requiredComponent", nameof(MindContainerComponent)));
- public string Help => Loc.GetString("set-mind-command-help-text", ("command", Command));
- public void Execute(IConsoleShell shell, string argStr, string[] args)
- {
- if (args.Length < 2)
- {
- shell.WriteLine(Loc.GetString("shell-wrong-arguments-number"));
- return;
- }
- if (!int.TryParse(args[0], out var entInt))
- {
- shell.WriteLine(Loc.GetString("shell-entity-uid-must-be-number"));
- return;
- }
- bool ghostOverride = true;
- if (args.Length > 2)
- {
- ghostOverride = bool.Parse(args[2]);
- }
- var nent = new NetEntity(entInt);
- if (!_entManager.TryGetEntity(nent, out var eUid))
- {
- shell.WriteLine(Loc.GetString("shell-invalid-entity-id"));
- return;
- }
- if (!_entManager.HasComponent<MindContainerComponent>(eUid))
- {
- shell.WriteLine(Loc.GetString("set-mind-command-target-has-no-mind-message"));
- return;
- }
- if (!IoCManager.Resolve<IPlayerManager>().TryGetSessionByUsername(args[1], out var session))
- {
- shell.WriteLine(Loc.GetString("shell-target-player-does-not-exist"));
- return;
- }
- // hm, does player have a mind? if not we may need to give them one
- var playerCData = session.ContentData();
- if (playerCData == null)
- {
- shell.WriteLine(Loc.GetString("set-mind-command-target-has-no-content-data-message"));
- return;
- }
- var mindSystem = _entManager.System<SharedMindSystem>();
- var metadata = _entManager.GetComponent<MetaDataComponent>(eUid.Value);
- var mind = playerCData.Mind ?? mindSystem.CreateMind(session.UserId, metadata.EntityName);
- mindSystem.TransferTo(mind, eUid, ghostOverride);
- }
- public CompletionResult GetCompletion(IConsoleShell shell, string[] args)
- {
- if (args.Length == 2)
- {
- return CompletionResult.FromHintOptions(CompletionHelper.SessionNames(), Loc.GetString("cmd-mind-command-hint"));
- }
- return CompletionResult.Empty;
- }
- }
- }
|