28 lines
1.1 KiB
C#
28 lines
1.1 KiB
C#
using System.Text.RegularExpressions;
|
|
using Content.Server.Speech.Components;
|
|
|
|
namespace Content.Server.Speech.EntitySystems;
|
|
|
|
public sealed class FrontalLispSystem : EntitySystem
|
|
{
|
|
public override void Initialize()
|
|
{
|
|
base.Initialize();
|
|
SubscribeLocalEvent<FrontalLispComponent, AccentGetEvent>(OnAccent);
|
|
}
|
|
|
|
private void OnAccent(EntityUid uid, FrontalLispComponent component, AccentGetEvent args)
|
|
{
|
|
var message = args.Message;
|
|
|
|
// handles ts, sc(i|e|y), c(i|e|y), ps, st(io(u|n)), ch(i|e), z, s
|
|
message = Regex.Replace(message, @"[T]+[Ss]+|[S]+[Cc]+(?=[IiEeYy]+)|[C]+(?=[IiEeYy]+)|[P][Ss]+|([S]+[Tt]+|[T]+)(?=[Ii]+[Oo]+[Uu]*[Nn]*)|[C]+[Hh]+(?=[Ii]*[Ee]*)|[Z]+|[S]+|[X]+(?=[Ee]+)", "TH");
|
|
message = Regex.Replace(message, @"[t]+[s]+|[s]+[c]+(?=[iey]+)|[c]+(?=[iey]+)|[p][s]+|([s]+[t]+|[t]+)(?=[i]+[o]+[u]*[n]*)|[c]+[h]+(?=[i]*[e]*)|[z]+|[s]+|[x]+(?=[e]+)", "th");
|
|
// handles ex(c), x
|
|
message = Regex.Replace(message, @"[E]+[Xx]+[Cc]*|[X]+", "EKTH");
|
|
message = Regex.Replace(message, @"[e]+[x]+[c]*|[x]+", "ekth");
|
|
|
|
args.Message = message;
|
|
}
|
|
}
|