1
0

LizardAccentSystem.cs 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. using System.Text.RegularExpressions;
  2. using Content.Server.Speech.Components;
  3. namespace Content.Server.Speech.EntitySystems;
  4. public sealed class LizardAccentSystem : EntitySystem
  5. {
  6. private static readonly Regex RegexLowerS = new("s+");
  7. private static readonly Regex RegexUpperS = new("S+");
  8. private static readonly Regex RegexInternalX = new(@"(\w)x");
  9. private static readonly Regex RegexLowerEndX = new(@"\bx([\-|r|R]|\b)");
  10. private static readonly Regex RegexUpperEndX = new(@"\bX([\-|r|R]|\b)");
  11. public override void Initialize()
  12. {
  13. base.Initialize();
  14. SubscribeLocalEvent<LizardAccentComponent, AccentGetEvent>(OnAccent);
  15. }
  16. private void OnAccent(EntityUid uid, LizardAccentComponent component, AccentGetEvent args)
  17. {
  18. var message = args.Message;
  19. // hissss
  20. message = RegexLowerS.Replace(message, "sss");
  21. // hiSSS
  22. message = RegexUpperS.Replace(message, "SSS");
  23. // ekssit
  24. message = RegexInternalX.Replace(message, "$1kss");
  25. // ecks
  26. message = RegexLowerEndX.Replace(message, "ecks$1");
  27. // eckS
  28. message = RegexUpperEndX.Replace(message, "ECKS$1");
  29. args.Message = message;
  30. }
  31. }