]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Quieter Meat Kudzu (#39304)
authorPrincess Cheeseballs <66055347+Princess-Cheeseballs@users.noreply.github.com>
Sun, 12 Oct 2025 10:36:54 +0000 (03:36 -0700)
committerGitHub <noreply@github.com>
Sun, 12 Oct 2025 10:36:54 +0000 (10:36 +0000)
Init Commit

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
Content.Server/Chat/Systems/AutoEmoteSystem.cs
Content.Shared/Chat/Prototypes/AutoEmotePrototype.cs
Resources/Prototypes/Entities/Objects/Misc/kudzu.yml
Resources/Prototypes/Voice/auto_emotes.yml

index 3d6bd5354011c5d8209a5eed6cbaa9af53169f51..1e1b7b903408e2f85b6fa4faa8e9e0f6731c5bd0 100644 (file)
@@ -46,7 +46,11 @@ public sealed class AutoEmoteSystem : EntitySystem
 
                 if (autoEmotePrototype.WithChat)
                 {
-                    _chatSystem.TryEmoteWithChat(uid, autoEmotePrototype.EmoteId, autoEmotePrototype.HiddenFromChatWindow ? ChatTransmitRange.HideChat : ChatTransmitRange.Normal);
+                    _chatSystem.TryEmoteWithChat(uid,
+                        autoEmotePrototype.EmoteId,
+                        autoEmotePrototype.HiddenFromChatWindow ? ChatTransmitRange.HideChat : ChatTransmitRange.Normal,
+                        ignoreActionBlocker: autoEmotePrototype.IgnoreActionBlocker,
+                        forceEmote: autoEmotePrototype.Force);
                 }
                 else
                 {
index e6fdae4cf1bcb5a02bbe368edc6d1833f88aa5db..a3d6ccce7fd1214274f0da799cadc70c7603df3c 100644 (file)
@@ -14,30 +14,44 @@ public sealed partial class AutoEmotePrototype : IPrototype
     /// The ID of the emote prototype.
     /// </summary>
     [DataField("emote", required: true, customTypeSerializer: typeof(PrototypeIdSerializer<EmotePrototype>))]
-    public string EmoteId = String.Empty;
+    public string EmoteId = string.Empty;
 
     /// <summary>
     /// How often an attempt at the emote will be made.
     /// </summary>
-    [DataField("interval", required: true)]
+    [DataField(required: true)]
     public TimeSpan Interval;
 
     /// <summary>
     /// Probability of performing the emote each interval.
-    /// <summary>
+    /// </summary>
     [DataField("chance")]
     public float Chance = 1;
 
     /// <summary>
     /// Also send the emote in chat.
-    /// <summary>
-    [DataField("withChat")]
+    /// </summary>
+    [DataField]
     public bool WithChat = true;
 
     /// <summary>
-    /// Hide the chat message from the chat window, only showing the popup.
+    /// Should we ignore action blockers?
+    /// This does nothing if WithChat is false.
+    /// </summary>
+    [DataField]
+    public bool IgnoreActionBlocker;
+
+    /// <summary>
+    /// Should we ignore whitelists and force the emote?
     /// This does nothing if WithChat is false.
+    /// </summary>
+    [DataField]
+    public bool Force;
+
     /// <summary>
-    [DataField("hiddenFromChatWindow")]
-    public bool HiddenFromChatWindow = false;
+    /// Hide the chat message from the chat window, only showing the popup.
+    /// This does nothing if WithChat is false.
+    /// </summary>
+    [DataField]
+    public bool HiddenFromChatWindow;
 }
index 6c01a2a8dd3d0f4efbf81d7dbd52c4e46d7b0fe4..1afe45e5eff0be1ad916d7a1a9f70a3df2f1dc17 100644 (file)
             Quantity: 2
           - ReagentId: Protein
             Quantity: 1
-    - type: Respirator
-      damage:
-        types:
-          Asphyxiation: 0.25
-      damageRecovery:
-        types:
-          Asphyxiation: -0.25
+    - type: AutoEmote # Meat Kudzu used to have respirator, but couldn't breathe so all it would do is gasp.
+      emotes:
+      - MeatGasp
     - type: Tag
       tags:
       - Meat
index 2d2de26604e9616d79ed87ebf728675691aeff77..4b9830ccd55ab9452e7631064454dfce029e6bed 100644 (file)
   interval: 5.0
   chance: 0.5
   withChat: false
+# Kudzu
+- type: autoEmote
+  id: MeatGasp
+  emote: Gasp
+  interval: 4.0 # Same interval as a full breathing cycle
+  chance: 0.01 # Make it very rare
+  ignoreActionBlocker: true
+  force: true
+  hiddenFromChatWindow: true