diff --git a/Content.Server/Administration/Commands/AdminWhoCommand.cs b/Content.Server/Administration/Commands/AdminWhoCommand.cs
index cf2f8c453c8..feeec90e483 100644
--- a/Content.Server/Administration/Commands/AdminWhoCommand.cs
+++ b/Content.Server/Administration/Commands/AdminWhoCommand.cs
@@ -7,7 +7,7 @@ using Robust.Shared.Utility;
namespace Content.Server.Administration.Commands;
-[AdminCommand(AdminFlags.Admin)]
+[AdminCommand(AdminFlags.AdminWho)]
public sealed class AdminWhoCommand : IConsoleCommand
{
public string Command => "adminwho";
diff --git a/Content.Server/Administration/Commands/AnnounceUiCommand.cs b/Content.Server/Administration/Commands/AnnounceUiCommand.cs
index d80db966863..abb9235a3af 100644
--- a/Content.Server/Administration/Commands/AnnounceUiCommand.cs
+++ b/Content.Server/Administration/Commands/AnnounceUiCommand.cs
@@ -5,7 +5,7 @@ using Robust.Shared.Console;
namespace Content.Server.Administration.Commands
{
- [AdminCommand(AdminFlags.Admin)]
+ [AdminCommand(AdminFlags.Moderator)]
public sealed class AnnounceUiCommand : IConsoleCommand
{
public string Command => "announceui";
diff --git a/Content.Server/Administration/Commands/BanExemptionCommands.cs b/Content.Server/Administration/Commands/BanExemptionCommands.cs
index 6db00db90ce..b6b5f705f97 100644
--- a/Content.Server/Administration/Commands/BanExemptionCommands.cs
+++ b/Content.Server/Administration/Commands/BanExemptionCommands.cs
@@ -6,7 +6,7 @@ using Robust.Shared.Console;
namespace Content.Server.Administration.Commands;
-[AdminCommand(AdminFlags.Admin)]
+[AdminCommand(AdminFlags.Ban)]
public sealed class BanExemptionUpdateCommand : LocalizedCommands
{
[Dependency] private readonly IServerDbManager _dbManager = default!;
@@ -61,7 +61,7 @@ public sealed class BanExemptionUpdateCommand : LocalizedCommands
}
}
-[AdminCommand(AdminFlags.Admin)]
+[AdminCommand(AdminFlags.Ban)]
public sealed class BanExemptionGetCommand : LocalizedCommands
{
[Dependency] private readonly IServerDbManager _dbManager = default!;
diff --git a/Content.Server/Administration/Commands/DSay.cs b/Content.Server/Administration/Commands/DSay.cs
index 8682614b5fc..f29e105909f 100644
--- a/Content.Server/Administration/Commands/DSay.cs
+++ b/Content.Server/Administration/Commands/DSay.cs
@@ -4,7 +4,7 @@ using Robust.Shared.Console;
namespace Content.Server.Administration.Commands
{
- [AdminCommand(AdminFlags.Admin)]
+ [AdminCommand(AdminFlags.Moderator)]
sealed class DSay : IConsoleCommand
{
[Dependency] private readonly IEntityManager _e = default!;
diff --git a/Content.Server/Administration/Commands/FaxUiCommand.cs b/Content.Server/Administration/Commands/FaxUiCommand.cs
index cf9e97e3997..8323278c58b 100644
--- a/Content.Server/Administration/Commands/FaxUiCommand.cs
+++ b/Content.Server/Administration/Commands/FaxUiCommand.cs
@@ -5,7 +5,7 @@ using Robust.Shared.Console;
namespace Content.Server.Administration.Commands;
-[AdminCommand(AdminFlags.Admin)]
+[AdminCommand(AdminFlags.Fun)]
public sealed class FaxUiCommand : IConsoleCommand
{
public string Command => "faxui";
@@ -27,4 +27,3 @@ public sealed class FaxUiCommand : IConsoleCommand
eui.OpenEui(ui, player);
}
}
-
diff --git a/Content.Server/Administration/Commands/LinkBluespaceLocker.cs b/Content.Server/Administration/Commands/LinkBluespaceLocker.cs
index d2f7e4de159..9fac72664b6 100644
--- a/Content.Server/Administration/Commands/LinkBluespaceLocker.cs
+++ b/Content.Server/Administration/Commands/LinkBluespaceLocker.cs
@@ -4,7 +4,7 @@ using Robust.Shared.Console;
namespace Content.Server.Administration.Commands;
-[AdminCommand(AdminFlags.Admin)]
+[AdminCommand(AdminFlags.Fun)]
public sealed class LinkBluespaceLocker : IConsoleCommand
{
[Dependency] private readonly IEntityManager _entManager = default!;
diff --git a/Content.Server/Administration/Commands/PlayTimeCommands.cs b/Content.Server/Administration/Commands/PlayTimeCommands.cs
index 97d3f12e38d..42bc8635c4d 100644
--- a/Content.Server/Administration/Commands/PlayTimeCommands.cs
+++ b/Content.Server/Administration/Commands/PlayTimeCommands.cs
@@ -6,7 +6,7 @@ using Robust.Shared.Console;
namespace Content.Server.Administration.Commands;
-[AdminCommand(AdminFlags.Admin)]
+[AdminCommand(AdminFlags.Moderator)]
public sealed class PlayTimeAddOverallCommand : IConsoleCommand
{
[Dependency] private readonly IPlayerManager _playerManager = default!;
@@ -58,7 +58,7 @@ public sealed class PlayTimeAddOverallCommand : IConsoleCommand
}
}
-[AdminCommand(AdminFlags.Admin)]
+[AdminCommand(AdminFlags.Moderator)]
public sealed class PlayTimeAddRoleCommand : IConsoleCommand
{
[Dependency] private readonly IPlayerManager _playerManager = default!;
@@ -123,7 +123,7 @@ public sealed class PlayTimeAddRoleCommand : IConsoleCommand
}
}
-[AdminCommand(AdminFlags.Admin)]
+[AdminCommand(AdminFlags.Moderator)]
public sealed class PlayTimeGetOverallCommand : IConsoleCommand
{
[Dependency] private readonly IPlayerManager _playerManager = default!;
@@ -168,7 +168,7 @@ public sealed class PlayTimeGetOverallCommand : IConsoleCommand
}
}
-[AdminCommand(AdminFlags.Admin)]
+[AdminCommand(AdminFlags.Moderator)]
public sealed class PlayTimeGetRoleCommand : IConsoleCommand
{
[Dependency] private readonly IPlayerManager _playerManager = default!;
@@ -247,7 +247,7 @@ public sealed class PlayTimeGetRoleCommand : IConsoleCommand
///
/// Saves the timers for a particular player immediately
///
-[AdminCommand(AdminFlags.Admin)]
+[AdminCommand(AdminFlags.Moderator)]
public sealed class PlayTimeSaveCommand : IConsoleCommand
{
[Dependency] private readonly IPlayerManager _playerManager = default!;
diff --git a/Content.Server/Administration/Commands/SetAdminOOC.cs b/Content.Server/Administration/Commands/SetAdminOOC.cs
index 27528e1940f..c1f72f76660 100644
--- a/Content.Server/Administration/Commands/SetAdminOOC.cs
+++ b/Content.Server/Administration/Commands/SetAdminOOC.cs
@@ -5,7 +5,7 @@ using Robust.Shared.Console;
namespace Content.Server.Administration.Commands
{
- [AdminCommand(AdminFlags.Admin)]
+ [AdminCommand(AdminFlags.NameColor)]
internal sealed class SetAdminOOC : IConsoleCommand
{
public string Command => "setadminooc";
diff --git a/Content.Server/AlertLevel/Commands/SetAlertLevelCommand.cs b/Content.Server/AlertLevel/Commands/SetAlertLevelCommand.cs
index f52fc2b7187..405500442f7 100644
--- a/Content.Server/AlertLevel/Commands/SetAlertLevelCommand.cs
+++ b/Content.Server/AlertLevel/Commands/SetAlertLevelCommand.cs
@@ -8,7 +8,7 @@ using Robust.Shared.Console;
namespace Content.Server.AlertLevel.Commands
{
[UsedImplicitly]
- [AdminCommand(AdminFlags.Admin)]
+ [AdminCommand(AdminFlags.Fun)]
public sealed class SetAlertLevelCommand : LocalizedCommands
{
[Dependency] private readonly IEntitySystemManager _entitySystems = default!;
diff --git a/Content.Server/Announcements/AnnounceCommand.cs b/Content.Server/Announcements/AnnounceCommand.cs
index cedde3fc140..2307f36a5d0 100644
--- a/Content.Server/Announcements/AnnounceCommand.cs
+++ b/Content.Server/Announcements/AnnounceCommand.cs
@@ -6,7 +6,7 @@ using Robust.Shared.Console;
namespace Content.Server.Announcements
{
- [AdminCommand(AdminFlags.Admin)]
+ [AdminCommand(AdminFlags.Moderator)]
public sealed class AnnounceCommand : IConsoleCommand
{
public string Command => "announce";
diff --git a/Content.Server/Chat/Commands/SetOOCCommand.cs b/Content.Server/Chat/Commands/SetOOCCommand.cs
index e6e688377e9..d712a62401a 100644
--- a/Content.Server/Chat/Commands/SetOOCCommand.cs
+++ b/Content.Server/Chat/Commands/SetOOCCommand.cs
@@ -6,7 +6,7 @@ using Robust.Shared.Console;
namespace Content.Server.Chat.Commands;
-[AdminCommand(AdminFlags.Server)]
+[AdminCommand(AdminFlags.Admin)]
public sealed class SetOOCCommand : IConsoleCommand
{
public string Command => "setooc";
diff --git a/Content.Server/Chat/Systems/ChatSystem.cs b/Content.Server/Chat/Systems/ChatSystem.cs
index f72b5f42b7c..6d2909860c4 100644
--- a/Content.Server/Chat/Systems/ChatSystem.cs
+++ b/Content.Server/Chat/Systems/ChatSystem.cs
@@ -13,6 +13,7 @@ using Content.Server.Speech.EntitySystems;
using Content.Server.Station.Components;
using Content.Server.Station.Systems;
using Content.Shared.ActionBlocker;
+using Content.Shared.Administration;
using Content.Shared.CCVar;
using Content.Shared.Chat;
using Content.Shared.Database;
@@ -287,9 +288,13 @@ public sealed partial class ChatSystem : SharedChatSystem
message = SanitizeInGameOOCMessage(message);
var sendType = type;
- // If dead player LOOC is disabled, unless you are an aghost, send dead messages to dead chat
- if (!_adminManager.IsAdmin(player) && !_deadLoocEnabled &&
- (HasComp(source) || _mobStateSystem.IsDead(source)))
+ // If dead player LOOC is disabled, unless you are an admin with Moderator perms, send dead messages to dead chat
+ if ((_adminManager.IsAdmin(player) && _adminManager.HasAdminFlag(player, AdminFlags.Moderator)) // Override if admin
+ || _deadLoocEnabled
+ || (!HasComp(source) && !_mobStateSystem.IsDead(source))) // Check that player is not dead
+ {
+ }
+ else
sendType = InGameOOCChatType.Dead;
// If crit player LOOC is disabled, don't send the message at all.
diff --git a/Content.Server/Damage/Commands/GodModeCommand.cs b/Content.Server/Damage/Commands/GodModeCommand.cs
index 866737f17a9..06a968b4733 100644
--- a/Content.Server/Damage/Commands/GodModeCommand.cs
+++ b/Content.Server/Damage/Commands/GodModeCommand.cs
@@ -5,7 +5,7 @@ using Robust.Shared.Console;
namespace Content.Server.Damage.Commands
{
- [AdminCommand(AdminFlags.Admin)]
+ [AdminCommand(AdminFlags.Fun)]
public sealed class GodModeCommand : IConsoleCommand
{
[Dependency] private readonly IEntityManager _entManager = default!;
diff --git a/Content.Server/GhostKick/GhostKickManager.cs b/Content.Server/GhostKick/GhostKickManager.cs
index 7dd82970acf..40d21d79d2c 100644
--- a/Content.Server/GhostKick/GhostKickManager.cs
+++ b/Content.Server/GhostKick/GhostKickManager.cs
@@ -44,7 +44,7 @@ public sealed class GhostKickManager
}
}
-[AdminCommand(AdminFlags.Admin)]
+[AdminCommand(AdminFlags.Moderator)]
public sealed class GhostKickCommand : IConsoleCommand
{
public string Command => "ghostkick";
diff --git a/Content.Server/Motd/SetMOTDCommand.cs b/Content.Server/Motd/SetMOTDCommand.cs
index c99f7284358..3a7a5e71c6a 100644
--- a/Content.Server/Motd/SetMOTDCommand.cs
+++ b/Content.Server/Motd/SetMOTDCommand.cs
@@ -12,7 +12,7 @@ namespace Content.Server.Motd;
///
/// A console command usable by any user which prints or sets the Message of the Day.
///
-[AdminCommand(AdminFlags.Admin)]
+[AdminCommand(AdminFlags.Moderator)]
public sealed class SetMotdCommand : LocalizedCommands
{
[Dependency] private readonly IAdminLogManager _adminLogManager = default!;
diff --git a/Content.Server/Toolshed/Commands/Verbs/RunVerbAsCommand.cs b/Content.Server/Toolshed/Commands/Verbs/RunVerbAsCommand.cs
index 1b11dffeea7..5c1bac6c93b 100644
--- a/Content.Server/Toolshed/Commands/Verbs/RunVerbAsCommand.cs
+++ b/Content.Server/Toolshed/Commands/Verbs/RunVerbAsCommand.cs
@@ -8,7 +8,7 @@ using Robust.Shared.Toolshed.TypeParsers;
namespace Content.Server.Toolshed.Commands.Verbs;
-[ToolshedCommand, AdminCommand(AdminFlags.Admin)]
+[ToolshedCommand, AdminCommand(AdminFlags.Moderator)]
public sealed class RunVerbAsCommand : ToolshedCommand
{
private SharedVerbSystem? _verb;
diff --git a/Content.Server/Verbs/Commands/ListVerbsCommand.cs b/Content.Server/Verbs/Commands/ListVerbsCommand.cs
index 7b541afa666..1c80edb82af 100644
--- a/Content.Server/Verbs/Commands/ListVerbsCommand.cs
+++ b/Content.Server/Verbs/Commands/ListVerbsCommand.cs
@@ -1,11 +1,12 @@
using Content.Server.Administration;
+using Content.Server.Database;
using Content.Shared.Administration;
using Content.Shared.Verbs;
using Robust.Shared.Console;
namespace Content.Server.Verbs.Commands
{
- [AdminCommand(AdminFlags.Admin)]
+ [AdminCommand(AdminFlags.Moderator)]
public sealed class ListVerbsCommand : IConsoleCommand
{
[Dependency] private readonly IEntityManager _entManager = default!;
diff --git a/Content.Server/Voting/Managers/VoteManager.cs b/Content.Server/Voting/Managers/VoteManager.cs
index 5bd18cd8c45..edb11f0bdb5 100644
--- a/Content.Server/Voting/Managers/VoteManager.cs
+++ b/Content.Server/Voting/Managers/VoteManager.cs
@@ -316,7 +316,7 @@ namespace Content.Server.Voting.Managers
timeSpan = default;
// Admins can always call votes.
- if (_adminMgr.HasAdminFlag(initiator, AdminFlags.Admin))
+ if (_adminMgr.HasAdminFlag(initiator, AdminFlags.Moderator))
{
isAdmin = true;
return true;
@@ -370,7 +370,7 @@ namespace Content.Server.Voting.Managers
.Select(e => e.Data)
.ToImmutableArray();
// Store all votes in order for webhooks
- var voteTally = new List();
+ var voteTally = new List();
foreach(var entry in v.Entries)
{
voteTally.Add(entry.Votes);
diff --git a/Content.Server/Voting/VoteCommands.cs b/Content.Server/Voting/VoteCommands.cs
index 3c792dc6252..a6cfb3e0b90 100644
--- a/Content.Server/Voting/VoteCommands.cs
+++ b/Content.Server/Voting/VoteCommands.cs
@@ -66,7 +66,7 @@ namespace Content.Server.Voting
}
}
- [AdminCommand(AdminFlags.Admin)]
+ [AdminCommand(AdminFlags.Moderator)]
public sealed class CreateCustomCommand : IConsoleCommand
{
[Dependency] private readonly IAdminLogManager _adminLogger = default!;
@@ -308,7 +308,7 @@ namespace Content.Server.Voting
}
}
- [AdminCommand(AdminFlags.Admin)]
+ [AdminCommand(AdminFlags.Moderator)]
public sealed class CancelVoteCommand : IConsoleCommand
{
[Dependency] private readonly IAdminLogManager _adminLogger = default!;
diff --git a/Content.Shared/Administration/AdminFlags.cs b/Content.Shared/Administration/AdminFlags.cs
index cc694147da7..3e6ab966a6d 100644
--- a/Content.Shared/Administration/AdminFlags.cs
+++ b/Content.Shared/Administration/AdminFlags.cs
@@ -109,10 +109,25 @@
///
Pii = 1 << 18,
+ ///
+ /// Lets you take moderator actions on the game server.
+ ///
+ Moderator = 1 << 19,
+
+ ///
+ /// Lets you check currently online admins.
+ ///
+ AdminWho = 1 << 20,
+
+ ///
+ /// Lets you set the color of your OOC name.
+ ///
+ NameColor = 1 << 21,
+
///
/// DeltaV - The ability to whitelist people. Either this permission or +BAN is required for remove.
///
- Whitelist = 1 << 20,
+ Whitelist = 1 << 25,
///
/// Dangerous host permissions like scsi.
diff --git a/Resources/engineCommandPerms.yml b/Resources/engineCommandPerms.yml
index 42cc4668a93..b68a2b22dfb 100644
--- a/Resources/engineCommandPerms.yml
+++ b/Resources/engineCommandPerms.yml
@@ -90,12 +90,12 @@
- Flags: ADMIN
Commands:
- - delete
- - kick
- listplayers
- tp
- tpto
- - respawn
+
+- Flags: FUN
+ Commands:
- tippy
- tip
@@ -111,6 +111,12 @@
Commands:
- spawn
- cspawn
+ - delete
+
+- Flags: MODERATOR
+ Commands:
+ - kick
+ - respawn
- Flags: HOST
Commands: