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;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|