1
0

AddRoleCommand.cs 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. using Content.Server.Administration;
  2. using Content.Server.Roles.Jobs;
  3. using Content.Shared.Administration;
  4. using Content.Shared.Players;
  5. using Content.Shared.Roles;
  6. using Robust.Server.Player;
  7. using Robust.Shared.Console;
  8. using Robust.Shared.Prototypes;
  9. namespace Content.Server.Roles
  10. {
  11. [AdminCommand(AdminFlags.Admin)]
  12. public sealed class AddRoleCommand : IConsoleCommand
  13. {
  14. [Dependency] private readonly EntityManager _entityManager = default!;
  15. public string Command => "addrole";
  16. public string Description => "Adds a role to a player's mind.";
  17. public string Help => "addrole <session ID> <role>";
  18. public void Execute(IConsoleShell shell, string argStr, string[] args)
  19. {
  20. if (args.Length != 2)
  21. {
  22. shell.WriteLine("Expected exactly 2 arguments.");
  23. return;
  24. }
  25. var mgr = IoCManager.Resolve<IPlayerManager>();
  26. if (!mgr.TryGetPlayerDataByUsername(args[0], out var data))
  27. {
  28. shell.WriteLine("Can't find that mind");
  29. return;
  30. }
  31. var mind = data.ContentData()?.Mind;
  32. if (mind == null)
  33. {
  34. shell.WriteLine("Can't find that mind");
  35. return;
  36. }
  37. var prototypeManager = IoCManager.Resolve<IPrototypeManager>();
  38. if (!prototypeManager.TryIndex<JobPrototype>(args[1], out var jobPrototype))
  39. {
  40. shell.WriteLine("Can't find that role");
  41. return;
  42. }
  43. var jobs = _entityManager.System<JobSystem>();
  44. if (jobs.MindHasJobWithId(mind, jobPrototype.Name))
  45. {
  46. shell.WriteLine("Mind already has that role");
  47. return;
  48. }
  49. jobs.MindAddJob(mind.Value, args[1]);
  50. }
  51. }
  52. }