Add option for admins to disable bwoink (#25008)
* Add option for admins to disable bwoink In a vain attempt to get people to ahelp more, provide the possibility for admins to not play the bwoink sound if they don't want to scare the player. * Add silent indicator to discord relay * Use string interpolation
This commit is contained in:
@@ -72,7 +72,7 @@ namespace Content.Server.Administration.Systems
|
||||
Subs.CVar(_config, CVars.GameHostName, OnServerNameChanged, true);
|
||||
Subs.CVar(_config, CCVars.AdminAhelpOverrideClientName, OnOverrideChanged, true);
|
||||
_sawmill = IoCManager.Resolve<ILogManager>().GetSawmill("AHELP");
|
||||
_maxAdditionalChars = GenerateAHelpMessage("", "", true, _gameTicker.RoundDuration().ToString("hh\\:mm\\:ss"), _gameTicker.RunLevel).Length;
|
||||
_maxAdditionalChars = GenerateAHelpMessage("", "", true, _gameTicker.RoundDuration().ToString("hh\\:mm\\:ss"), _gameTicker.RunLevel, false).Length;
|
||||
_playerManager.PlayerStatusChanged += OnPlayerStatusChanged;
|
||||
|
||||
SubscribeLocalEvent<GameRunLevelChangedEvent>(OnGameRunLevelChanged);
|
||||
@@ -398,18 +398,21 @@ namespace Content.Server.Administration.Systems
|
||||
|
||||
if (senderAdmin is not null && senderAdmin.Flags == AdminFlags.Adminhelp) // Mentor. Not full admin. That's why it's colored differently.
|
||||
{
|
||||
bwoinkText = $"[color=purple]{senderSession.Name}[/color]: {escapedText}";
|
||||
bwoinkText = $"[color=purple]{senderSession.Name}[/color]";
|
||||
}
|
||||
else if (senderAdmin is not null && senderAdmin.HasFlag(AdminFlags.Adminhelp))
|
||||
{
|
||||
bwoinkText = $"[color=red]{senderSession.Name}[/color]: {escapedText}";
|
||||
bwoinkText = $"[color=red]{senderSession.Name}[/color]";
|
||||
}
|
||||
else
|
||||
{
|
||||
bwoinkText = $"{senderSession.Name}: {escapedText}";
|
||||
bwoinkText = $"{senderSession.Name}";
|
||||
}
|
||||
|
||||
var msg = new BwoinkTextMessage(message.UserId, senderSession.UserId, bwoinkText);
|
||||
bwoinkText = $"{(message.PlaySound ? "" : "(S) ")}{bwoinkText}: {escapedText}";
|
||||
|
||||
var playSound = senderAHelpAdmin && message.PlaySound;
|
||||
var msg = new BwoinkTextMessage(message.UserId, senderSession.UserId, bwoinkText, playSound: playSound);
|
||||
|
||||
LogBwoink(msg);
|
||||
|
||||
@@ -433,18 +436,20 @@ namespace Content.Server.Administration.Systems
|
||||
// Doing the same thing as above, but with the override name. Theres probably a better way to do this.
|
||||
if (senderAdmin is not null && senderAdmin.Flags == AdminFlags.Adminhelp) // Mentor. Not full admin. That's why it's colored differently.
|
||||
{
|
||||
overrideMsgText = $"[color=purple]{_overrideClientName}[/color]: {escapedText}";
|
||||
overrideMsgText = $"[color=purple]{_overrideClientName}[/color]";
|
||||
}
|
||||
else if (senderAdmin is not null && senderAdmin.HasFlag(AdminFlags.Adminhelp))
|
||||
{
|
||||
overrideMsgText = $"[color=red]{_overrideClientName}[/color]: {escapedText}";
|
||||
overrideMsgText = $"[color=red]{_overrideClientName}[/color]";
|
||||
}
|
||||
else
|
||||
{
|
||||
overrideMsgText = $"{senderSession.Name}: {escapedText}"; // Not an admin, name is not overridden.
|
||||
overrideMsgText = $"{senderSession.Name}"; // Not an admin, name is not overridden.
|
||||
}
|
||||
|
||||
RaiseNetworkEvent(new BwoinkTextMessage(message.UserId, senderSession.UserId, overrideMsgText), session.Channel);
|
||||
overrideMsgText = $"{(message.PlaySound ? "" : "(S) ")}{overrideMsgText}: {escapedText}";
|
||||
|
||||
RaiseNetworkEvent(new BwoinkTextMessage(message.UserId, senderSession.UserId, overrideMsgText, playSound: playSound), session.Channel);
|
||||
}
|
||||
else
|
||||
RaiseNetworkEvent(msg, session.Channel);
|
||||
@@ -465,7 +470,7 @@ namespace Content.Server.Administration.Systems
|
||||
str = str[..(DescriptionMax - _maxAdditionalChars - unameLength)];
|
||||
}
|
||||
var nonAfkAdmins = GetNonAfkAdmins();
|
||||
_messageQueues[msg.UserId].Enqueue(GenerateAHelpMessage(senderSession.Name, str, !personalChannel, _gameTicker.RoundDuration().ToString("hh\\:mm\\:ss"), _gameTicker.RunLevel, nonAfkAdmins.Count == 0));
|
||||
_messageQueues[msg.UserId].Enqueue(GenerateAHelpMessage(senderSession.Name, str, !personalChannel, _gameTicker.RoundDuration().ToString("hh\\:mm\\:ss"), _gameTicker.RunLevel, playSound, nonAfkAdmins.Count == 0));
|
||||
}
|
||||
|
||||
if (admins.Count != 0 || sendsWebhook)
|
||||
@@ -493,7 +498,7 @@ namespace Content.Server.Administration.Systems
|
||||
.ToList();
|
||||
}
|
||||
|
||||
private static string GenerateAHelpMessage(string username, string message, bool admin, string roundTime, GameRunLevel roundState, bool noReceivers = false)
|
||||
private static string GenerateAHelpMessage(string username, string message, bool admin, string roundTime, GameRunLevel roundState, bool playedSound, bool noReceivers = false)
|
||||
{
|
||||
var stringbuilder = new StringBuilder();
|
||||
|
||||
@@ -506,6 +511,8 @@ namespace Content.Server.Administration.Systems
|
||||
|
||||
if(roundTime != string.Empty && roundState == GameRunLevel.InRound)
|
||||
stringbuilder.Append($" **{roundTime}**");
|
||||
if (!playedSound)
|
||||
stringbuilder.Append(" **(S)**");
|
||||
stringbuilder.Append($" **{username}:** ");
|
||||
stringbuilder.Append(message);
|
||||
return stringbuilder.ToString();
|
||||
|
||||
Reference in New Issue
Block a user