--- /dev/null
+namespace Content.Server.Speech.Components;
+
+/// <summary>
+/// Makes this entity speak like a sheep or a goat in all chat messages it sends.
+/// </summary>
+[RegisterComponent]
+public sealed partial class BleatingAccentComponent : Component { }
--- /dev/null
+using System.Text.RegularExpressions;
+using Content.Server.Speech.Components;
+
+namespace Content.Server.Speech.EntitySystems;
+
+public sealed partial class BleatingAccentSystem : EntitySystem
+{
+ private static readonly Regex BleatRegex = new("([mbdlpwhrkcnytfo])([aiu])", RegexOptions.IgnoreCase);
+
+ public override void Initialize()
+ {
+ base.Initialize();
+
+ SubscribeLocalEvent<BleatingAccentComponent, AccentGetEvent>(OnAccentGet);
+ }
+
+ private void OnAccentGet(Entity<BleatingAccentComponent> entity, ref AccentGetEvent args)
+ {
+ args.Message = Accentuate(args.Message);
+ }
+
+ public static string Accentuate(string message)
+ {
+ // Repeats the vowel in certain consonant-vowel pairs
+ // So you taaaalk liiiike thiiiis
+ return BleatRegex.Replace(message, "$1$2$2$2$2");
+ }
+}
chat-speech-verb-canine-2 = woofs
chat-speech-verb-canine-3 = howls
+chat-speech-verb-name-goat = Goat
+chat-speech-verb-goat-1 = bleats
+chat-speech-verb-goat-2 = grunts
+chat-speech-verb-goat-3 = cries
+
chat-speech-verb-name-small-mob = Mouse
chat-speech-verb-small-mob-1 = squeaks
chat-speech-verb-small-mob-2 = pieps
- type: Grammar
attributes:
gender: female # Here because of UdderComponent
+ - type: Speech
+ speechSounds: Goat
+ speechVerb: Goat
+ - type: Vocal
+ sounds:
+ Female: Goat
+ Male: Goat
+ Unsexed: Goat
+ - type: BleatingAccent
- type: InteractionPopup
successChance: 0.2
interactSuccessString: petting-success-goat
path: /Audio/Animals/parrot_raught.ogg
params:
variation: 0.125
+
+- type: emoteSounds
+ id: Goat
+ sound:
+ path: /Audio/Animals/goat_bah.ogg
+ params:
+ variation: 0.125
path: /Audio/Animals/chicken_cluck_happy.ogg
exclaimSound:
path: /Audio/Animals/chicken_cluck_happy.ogg
+
+- type: speechSounds
+ id: Goat
+ saySound:
+ path: /Audio/Animals/goat_bah.ogg
+ askSound:
+ path: /Audio/Animals/goat_bah.ogg
+ exclaimSound:
+ path: /Audio/Animals/goat_bah.ogg
- chat-speech-verb-canine-2
- chat-speech-verb-canine-3
+- type: speechVerb
+ id: Goat
+ name: chat-speech-verb-name-goat
+ speechVerbStrings:
+ - chat-speech-verb-goat-1
+ - chat-speech-verb-goat-2
+ - chat-speech-verb-goat-3
+
- type: speechVerb
id: LargeMob
name: chat-speech-verb-name-large-mob