1
0

SouthernAccentSystem.cs 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. using System.Text.RegularExpressions;
  2. using Content.Server.Speech.Components;
  3. namespace Content.Server.Speech.EntitySystems;
  4. public sealed class SouthernAccentSystem : EntitySystem
  5. {
  6. private static readonly Regex RegexLowerIng = new(@"ing\b");
  7. private static readonly Regex RegexUpperIng = new(@"ING\b");
  8. private static readonly Regex RegexLowerAnd = new(@"\band\b");
  9. private static readonly Regex RegexUpperAnd = new(@"\bAND\b");
  10. private static readonly Regex RegexLowerDve = new(@"d've\b");
  11. private static readonly Regex RegexUpperDve = new(@"D'VE\b");
  12. [Dependency] private readonly ReplacementAccentSystem _replacement = default!;
  13. public override void Initialize()
  14. {
  15. base.Initialize();
  16. SubscribeLocalEvent<SouthernAccentComponent, AccentGetEvent>(OnAccent);
  17. }
  18. private void OnAccent(EntityUid uid, SouthernAccentComponent component, AccentGetEvent args)
  19. {
  20. var message = args.Message;
  21. message = _replacement.ApplyReplacements(message, "southern");
  22. //They shoulda started runnin' an' hidin' from me!
  23. message = RegexLowerIng.Replace(message, "in'");
  24. message = RegexUpperIng.Replace(message, "IN'");
  25. message = RegexLowerAnd.Replace(message, "an'");
  26. message = RegexUpperAnd.Replace(message, "AN'");
  27. message = RegexLowerDve.Replace(message, "da");
  28. message = RegexUpperDve.Replace(message, "DA");
  29. args.Message = message;
  30. }
  31. };