| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- using System.Text;
- using Content.Server.Speech.Components;
- using Robust.Shared.Random;
- namespace Content.Server.Speech.EntitySystems;
- public sealed class MonkeyAccentSystem : EntitySystem
- {
- [Dependency] private readonly IRobustRandom _random = default!;
- public override void Initialize()
- {
- SubscribeLocalEvent<MonkeyAccentComponent, AccentGetEvent>(OnAccent);
- }
- public string Accentuate(string message)
- {
- var words = message.Split();
- var accentedMessage = new StringBuilder(message.Length + 2);
- for (var i = 0; i < words.Length; i++)
- {
- var word = words[i];
- if (_random.NextDouble() >= 0.5)
- {
- if (word.Length > 1)
- {
- foreach (var _ in word)
- {
- accentedMessage.Append('O');
- }
- if (_random.NextDouble() >= 0.3)
- accentedMessage.Append('K');
- }
- else
- accentedMessage.Append('O');
- }
- else
- {
- foreach (var _ in word)
- {
- if (_random.NextDouble() >= 0.8)
- accentedMessage.Append('H');
- else
- accentedMessage.Append('A');
- }
- }
- if (i < words.Length - 1)
- accentedMessage.Append(' ');
- }
- accentedMessage.Append('!');
- return accentedMessage.ToString();
- }
- private void OnAccent(EntityUid uid, MonkeyAccentComponent component, AccentGetEvent args)
- {
- args.Message = Accentuate(args.Message);
- }
- }
|