1
0

OhioAccentSystem.cs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. // SPDX-FileCopyrightText: 2024 Aidenkrz <aiden@djkraz.com>
  2. // SPDX-FileCopyrightText: 2024 Piras314 <p1r4s@proton.me>
  3. // SPDX-FileCopyrightText: 2025 Aiden <28298836+Aidenkrz@users.noreply.github.com>
  4. // SPDX-FileCopyrightText: 2025 Misandry <mary@thughunt.ing>
  5. // SPDX-FileCopyrightText: 2025 gus <august.eymann@gmail.com>
  6. //
  7. // SPDX-License-Identifier: AGPL-3.0-or-later
  8. using Content.Server.Speech.Components;
  9. using Robust.Shared.Random;
  10. namespace Content.Server.Speech.EntitySystems;
  11. public sealed class OhioAccentSystem : EntitySystem
  12. {
  13. [Dependency] private readonly IRobustRandom _random = default!;
  14. [Dependency] private readonly ReplacementAccentSystem _replacement = default!;
  15. public override void Initialize()
  16. {
  17. base.Initialize();
  18. SubscribeLocalEvent<OhioAccentComponent, AccentGetEvent>(OnAccent);
  19. }
  20. private void OnAccent(EntityUid uid, OhioAccentComponent component, AccentGetEvent args)
  21. {
  22. var message = args.Message;
  23. message = _replacement.ApplyReplacements(message, "ohio");
  24. // Prefix
  25. if (_random.Prob(0.15f))
  26. {
  27. var pick = _random.Next(1, 3);
  28. // Reverse sanitize capital
  29. message = message[0].ToString().ToLower() + message.Remove(0, 1);
  30. message = Loc.GetString($"accent-ohio-prefix-{pick}") + " " + message;
  31. }
  32. // Sanitize capital again, in case we substituted a word that should be capitalized
  33. message = message[0].ToString().ToUpper() + message.Remove(0, 1);
  34. // Suffixes
  35. if (_random.Prob(0.3f))
  36. {
  37. var pick = _random.Next(1, 8);
  38. message += Loc.GetString($"accent-ohio-suffix-{pick}");
  39. }
  40. args.Message = message;
  41. }
  42. };