// SPDX-FileCopyrightText: 2024 Aidenkrz // SPDX-FileCopyrightText: 2024 BeeRobynn <166929042+BeeRobynn@users.noreply.github.com> // SPDX-FileCopyrightText: 2024 Piras314 // SPDX-FileCopyrightText: 2025 Aiden <28298836+Aidenkrz@users.noreply.github.com> // SPDX-FileCopyrightText: 2025 Cattowo <2spoopy4u2handle@gmail.com> // SPDX-FileCopyrightText: 2025 Misandry // SPDX-FileCopyrightText: 2025 gus // SPDX-FileCopyrightText: 2025 smudge <138918973+Cerise-Cattowo@users.noreply.github.com> // // SPDX-License-Identifier: AGPL-3.0-or-later using Content.Server.Speech.Components; using Robust.Shared.Random; namespace Content.Server.Speech.EntitySystems; public sealed class MedievalAccentSystem : EntitySystem { [Dependency] private readonly IRobustRandom _random = default!; [Dependency] private readonly ReplacementAccentSystem _replacement = default!; public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnAccent); } private void OnAccent(EntityUid uid, MedievalAccentComponent component, AccentGetEvent args) { var message = args.Message; message = _replacement.ApplyReplacements(message, "medieval"); // Prefix if (_random.Prob(0.40f)) { var pick = _random.Next(1, 42); // Reverse sanitize capital message = message[0].ToString().ToLower() + message.Remove(0, 1); message = Loc.GetString($"accent-medieval-prefix-{pick}") + " " + message; } // Sanitize capital again, in case we substituted a word that should be capitalized message = message[0].ToString().ToUpper() + message.Remove(0, 1); args.Message = message; } };