Quieter Meat Kudzu (#39304)

Init Commit

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
This commit is contained in:
Princess Cheeseballs
2025-10-12 03:36:54 -07:00
committed by GitHub
parent 7578f06461
commit 2c1fc92e5c
4 changed files with 39 additions and 16 deletions

View File

@@ -46,7 +46,11 @@ public sealed class AutoEmoteSystem : EntitySystem
if (autoEmotePrototype.WithChat) 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 else
{ {

View File

@@ -14,30 +14,44 @@ public sealed partial class AutoEmotePrototype : IPrototype
/// The ID of the emote prototype. /// The ID of the emote prototype.
/// </summary> /// </summary>
[DataField("emote", required: true, customTypeSerializer: typeof(PrototypeIdSerializer<EmotePrototype>))] [DataField("emote", required: true, customTypeSerializer: typeof(PrototypeIdSerializer<EmotePrototype>))]
public string EmoteId = String.Empty; public string EmoteId = string.Empty;
/// <summary> /// <summary>
/// How often an attempt at the emote will be made. /// How often an attempt at the emote will be made.
/// </summary> /// </summary>
[DataField("interval", required: true)] [DataField(required: true)]
public TimeSpan Interval; public TimeSpan Interval;
/// <summary> /// <summary>
/// Probability of performing the emote each interval. /// Probability of performing the emote each interval.
/// <summary> /// </summary>
[DataField("chance")] [DataField("chance")]
public float Chance = 1; public float Chance = 1;
/// <summary> /// <summary>
/// Also send the emote in chat. /// Also send the emote in chat.
/// <summary> /// </summary>
[DataField("withChat")] [DataField]
public bool WithChat = true; public bool WithChat = true;
/// <summary>
/// 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> /// <summary>
/// Hide the chat message from the chat window, only showing the popup. /// Hide the chat message from the chat window, only showing the popup.
/// This does nothing if WithChat is false. /// This does nothing if WithChat is false.
/// <summary> /// </summary>
[DataField("hiddenFromChatWindow")] [DataField]
public bool HiddenFromChatWindow = false; public bool HiddenFromChatWindow;
} }

View File

@@ -256,13 +256,9 @@
Quantity: 2 Quantity: 2
- ReagentId: Protein - ReagentId: Protein
Quantity: 1 Quantity: 1
- type: Respirator - type: AutoEmote # Meat Kudzu used to have respirator, but couldn't breathe so all it would do is gasp.
damage: emotes:
types: - MeatGasp
Asphyxiation: 0.25
damageRecovery:
types:
Asphyxiation: -0.25
- type: Tag - type: Tag
tags: tags:
- Meat - Meat

View File

@@ -12,3 +12,12 @@
interval: 5.0 interval: 5.0
chance: 0.5 chance: 0.5
withChat: false 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