Files
OldThink/Content.Server/Speech/EntitySystems/LizardAccentSystem.cs

89 lines
2.4 KiB
C#
Raw Normal View History

2022-03-13 07:23:43 +03:00
using System.Text.RegularExpressions;
using Content.Server.Speech.Components;
2023-04-23 18:30:37 +06:00
using Robust.Shared.Random;
2022-03-13 07:23:43 +03:00
namespace Content.Server.Speech.EntitySystems;
public sealed class LizardAccentSystem : EntitySystem
{
2023-04-23 18:30:37 +06:00
[Dependency] private readonly IRobustRandom _random = default!;
2022-03-13 07:23:43 +03:00
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<LizardAccentComponent, AccentGetEvent>(OnAccent);
}
private void OnAccent(EntityUid uid, LizardAccentComponent component, AccentGetEvent args)
{
var message = args.Message;
// hissss
message = Regex.Replace(message, "s+", "sss");
// hiSSS
message = Regex.Replace(message, "S+", "SSS");
// ekssit
message = Regex.Replace(message, @"(\w)x", "$1kss");
// ecks
message = Regex.Replace(message, @"\bx([\-|r|R]|\b)", "ecks$1");
// eckS
message = Regex.Replace(message, @"\bX([\-|r|R]|\b)", "ECKS$1");
2023-04-23 18:30:37 +06:00
//WD-EDIT
// c => ссс
message = Regex.Replace(
message,
"с+",
_random.Pick(new List<string>() { "сс", "ссс" })
);
// С => CCC
message = Regex.Replace(
message,
"С+",
_random.Pick(new List<string>() { "Сс", "Ссс" })
);
// з => ссс
message = Regex.Replace(
message,
"з+",
_random.Pick(new List<string>() { "сс", "ссс" })
);
// З => CCC
message = Regex.Replace(
message,
"З+",
_random.Pick(new List<string>() { "Сс", "Ссс" })
);
// ш => шшш
message = Regex.Replace(
message,
"ш+",
_random.Pick(new List<string>() { "шш", "шшш" })
);
// Ш => ШШШ
message = Regex.Replace(
message,
"Ш+",
_random.Pick(new List<string>() { "Шш", "Шшш" })
);
// ч => щщщ
message = Regex.Replace(
message,
"ч+",
_random.Pick(new List<string>() { "щщ", "щщщ" })
);
// Ч => ЩЩЩ
message = Regex.Replace(
message,
"Ч+",
_random.Pick(new List<string>() { "Щщ", "Щщщ" })
);
//WD-EDIT
2022-03-13 07:23:43 +03:00
args.Message = message;
}
}