Files
tbd-station-14/Content.Server/Speech/EntitySystems/SouthernAccentSystem.cs
Princess Cheeseballs 367ff79006 Accents Event to Shared (#38948)
* 27 file diff

* 27 file diff 2

* Apply suggestions from code review

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2025-07-12 22:52:51 +02:00

40 lines
1.5 KiB
C#

using System.Text.RegularExpressions;
using Content.Server.Speech.Components;
using Content.Shared.Speech;
namespace Content.Server.Speech.EntitySystems;
public sealed class SouthernAccentSystem : EntitySystem
{
private static readonly Regex RegexLowerIng = new(@"ing\b");
private static readonly Regex RegexUpperIng = new(@"ING\b");
private static readonly Regex RegexLowerAnd = new(@"\band\b");
private static readonly Regex RegexUpperAnd = new(@"\bAND\b");
private static readonly Regex RegexLowerDve = new(@"d've\b");
private static readonly Regex RegexUpperDve = new(@"D'VE\b");
[Dependency] private readonly ReplacementAccentSystem _replacement = default!;
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<SouthernAccentComponent, AccentGetEvent>(OnAccent);
}
private void OnAccent(EntityUid uid, SouthernAccentComponent component, AccentGetEvent args)
{
var message = args.Message;
message = _replacement.ApplyReplacements(message, "southern");
//They shoulda started runnin' an' hidin' from me!
message = RegexLowerIng.Replace(message, "in'");
message = RegexUpperIng.Replace(message, "IN'");
message = RegexLowerAnd.Replace(message, "an'");
message = RegexUpperAnd.Replace(message, "AN'");
message = RegexLowerDve.Replace(message, "da");
message = RegexUpperDve.Replace(message, "DA");
args.Message = message;
}
};