CatStation/Content.Shared/Speech/EntitySystems/OwOAccentSystem.cs
Pok 7a8fab78e3
Move Accents to Shared v2 (#44772)
* move-accents-to-shared

* Update AccentSystem.cs

* Update ListeningSystem.cs

* aaaaaa

* Update AccentSystem.cs

* oh god

* aaooao

* //

* review

* fix

* Update VocalSystem.cs
2026-07-25 22:29:39 +00:00

42 lines
1.3 KiB
C#

using System.Collections.Frozen;
using Content.Shared.Random.Helpers;
using Content.Shared.Speech.Components;
using Robust.Shared.Random;
using Robust.Shared.Timing;
namespace Content.Shared.Speech.EntitySystems;
public sealed partial class OwOAccentSystem : RelayAccentSystem<OwOAccentComponent>
{
[Dependency] private IGameTiming _timing = default!;
[Dependency] private IRobustRandom _random = default!;
private static readonly IReadOnlyList<string> Faces =
[
" (•`ω´•)", " ;;w;;", " owo", " UwU", " >w<", " ^w^",
];
private static readonly FrozenDictionary<string, string> SpecialWords =
new Dictionary<string, string>
{
{ "you", "wu" },
}.ToFrozenDictionary();
public override string Accentuate(string message, Entity<OwOAccentComponent>? ent = null)
{
var random = ent.HasValue
? SharedRandomExtensions.PredictedRandom(_timing, GetNetEntity(ent.Value))
: _random;
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");
}
}