using Content.Server.Speech.Components; using Robust.Shared.Random; namespace Content.Server.Speech.EntitySystems { public sealed class OwOAccentSystem : EntitySystem { [Dependency] private readonly IRobustRandom _random = default!; private static readonly IReadOnlyList Faces = new List{ " (•`ω´•)", " ;;w;;", " owo", " UwU", " >w<", " ^w^" }.AsReadOnly(); private static readonly IReadOnlyDictionary SpecialWords = new Dictionary() { { "you", "wu" }, }; public override void Initialize() { SubscribeLocalEvent(OnAccent); } public string Accentuate(string message) { foreach (var (word, repl) in SpecialWords) { message = message.Replace(word, repl); } return message.Replace("!", _random.Pick(Faces)) .Replace("r", "w").Replace("R", "W") .Replace("l", "w").Replace("L", "W"); } private void OnAccent(EntityUid uid, OwOAccentComponent component, AccentGetEvent args) { args.Message = Accentuate(args.Message); } } }