using Content.Server.Popups;
using Content.Shared.Verbs;
using Robust.Shared.Collections;
+using Content.Server.Administration.Managers;
+using Content.Shared.CCVar;
+using Robust.Shared.Configuration;
namespace Content.Server.Ghost.Roles
{
[Dependency] private readonly IGameTiming _timing = default!;
[Dependency] private readonly PopupSystem _popupSystem = default!;
[Dependency] private readonly IPrototypeManager _prototype = default!;
+ [Dependency] private readonly IAdminManager _adminManager = default!;
+ [Dependency] private readonly IConfigurationManager _cfg = default!;
private uint _nextRoleIdentifier;
private bool _needsUpdateGhostRoleCount = true;
// forced into a ghost role.
LeaveAllRaffles(message.Player);
CloseEui(message.Player);
+
+ // The player is no longer a ghost, so they should not be adminned anymore. Deadmin them.
+ // Ensures that admins do not forget to deadmin themselves upon entering a ghost role.
+ var autoDeAdmin = _cfg.GetCVar(CCVars.AdminDeadminOnJoin);
+ if (autoDeAdmin && _adminManager.IsAdmin(message.Entity))
+ {
+ _adminManager.DeAdmin(message.Player);
+ }
}
private void OnMindAdded(EntityUid uid, GhostTakeoverAvailableComponent component, MindAddedMessage args)
CVarDef.Create("admin.show_pii_onban", false, CVar.SERVERONLY);
/// <summary>
- /// If an admin joins a round by reading up or using the late join button, automatically
+ /// If an admin joins a round by readying up or using the late join button, automatically
/// de-admin them.
/// </summary>
public static readonly CVarDef<bool> AdminDeadminOnJoin =