MedievalAccentSystem.cs 1.8 KB

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