]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Make wearing an Ushanka also apply accent to your name (#29111)
authorTayrtahn <tayrtahn@gmail.com>
Mon, 17 Jun 2024 18:03:55 +0000 (14:03 -0400)
committerGitHub <noreply@github.com>
Mon, 17 Jun 2024 18:03:55 +0000 (14:03 -0400)
Content.Server/Speech/Components/AccentWearerNameClothingComponent.cs [new file with mode: 0644]
Content.Server/Speech/EntitySystems/AccentWearerNameClothingSystem.cs [new file with mode: 0644]
Resources/Locale/en-US/speech/accent-wearer-name-clothing.ftl [new file with mode: 0644]
Resources/Prototypes/Entities/Clothing/Head/hats.yml

diff --git a/Content.Server/Speech/Components/AccentWearerNameClothingComponent.cs b/Content.Server/Speech/Components/AccentWearerNameClothingComponent.cs
new file mode 100644 (file)
index 0000000..288eaa8
--- /dev/null
@@ -0,0 +1,10 @@
+using Content.Server.Speech.EntitySystems;
+
+namespace Content.Server.Speech.Components;
+
+/// <summary>
+/// Applies any accent components on this item to the name of the wearer while worn.
+/// </summary>
+[RegisterComponent]
+[Access(typeof(AccentWearerNameClothingSystem))]
+public sealed partial class AccentWearerNameClothingComponent : Component;
diff --git a/Content.Server/Speech/EntitySystems/AccentWearerNameClothingSystem.cs b/Content.Server/Speech/EntitySystems/AccentWearerNameClothingSystem.cs
new file mode 100644 (file)
index 0000000..fc381c5
--- /dev/null
@@ -0,0 +1,39 @@
+using Content.Server.Speech.Components;
+using Content.Shared.Clothing;
+using Content.Shared.Inventory;
+using Content.Shared.NameModifier.EntitySystems;
+
+namespace Content.Server.Speech.EntitySystems;
+
+/// <inheritdoc cref="AccentWearerNameClothingComponent"/>
+public sealed class AccentWearerNameClothingSystem : EntitySystem
+{
+    [Dependency] private readonly NameModifierSystem _nameMod = default!;
+
+    public override void Initialize()
+    {
+        base.Initialize();
+
+        SubscribeLocalEvent<AccentWearerNameClothingComponent, ClothingGotEquippedEvent>(OnGotEquipped);
+        SubscribeLocalEvent<AccentWearerNameClothingComponent, ClothingGotUnequippedEvent>(OnGotUnequipped);
+        SubscribeLocalEvent<AccentWearerNameClothingComponent, InventoryRelayedEvent<RefreshNameModifiersEvent>>(OnRefreshNameModifiers);
+    }
+
+    private void OnGotEquipped(Entity<AccentWearerNameClothingComponent> ent, ref ClothingGotEquippedEvent args)
+    {
+        _nameMod.RefreshNameModifiers(args.Wearer);
+    }
+
+    private void OnGotUnequipped(Entity<AccentWearerNameClothingComponent> ent, ref ClothingGotUnequippedEvent args)
+    {
+        _nameMod.RefreshNameModifiers(args.Wearer);
+    }
+
+    private void OnRefreshNameModifiers(Entity<AccentWearerNameClothingComponent> ent, ref InventoryRelayedEvent<RefreshNameModifiersEvent> args)
+    {
+        var ev = new AccentGetEvent(ent, args.Args.BaseName);
+        RaiseLocalEvent(ent, ev);
+        // Use a negative priority since we're going to bulldoze any earlier changes
+        args.Args.AddModifier("comp-accent-wearer-name-clothing-format", -1, ("accentedName", ev.Message));
+    }
+}
diff --git a/Resources/Locale/en-US/speech/accent-wearer-name-clothing.ftl b/Resources/Locale/en-US/speech/accent-wearer-name-clothing.ftl
new file mode 100644 (file)
index 0000000..49b0fb3
--- /dev/null
@@ -0,0 +1 @@
+comp-accent-wearer-name-clothing-format = {$accentedName}
index 2d2b2a353ef39ae30ef8e74a4ea6c293a97f1473..8cdabb4e1459a6cb4a43cb380e31529c0d40b9ca 100644 (file)
   - type: Appearance
   - type: AddAccentClothing
     accent: RussianAccent
+  - type: RussianAccent
+  - type: AccentWearerNameClothing
   - type: Foldable
     canFoldInsideContainer: true
   - type: FoldableClothing