From 9d0c0250690611cf579f08f658ad8feaa447ae14 Mon Sep 17 00:00:00 2001 From: SquishyEmmaaaa <235807504+SquishyEmmaaaa@users.noreply.github.com> Date: Sun, 14 Jun 2026 13:48:40 -0700 Subject: [PATCH 01/17] Category shows up, moth now sounds like harpy when talking, can use harpy emotes. wheel not showing right. --- Resources/Prototypes/_DV/Traits/emotes.yml | 39 +++++++++++++++++++ .../_DV/Traits/trait_categories.yml | 8 ++++ 2 files changed, 47 insertions(+) create mode 100644 Resources/Prototypes/_DV/Traits/emotes.yml diff --git a/Resources/Prototypes/_DV/Traits/emotes.yml b/Resources/Prototypes/_DV/Traits/emotes.yml new file mode 100644 index 00000000000..6c94e8f9375 --- /dev/null +++ b/Resources/Prototypes/_DV/Traits/emotes.yml @@ -0,0 +1,39 @@ +# Triad New Category +- type: trait + id: FriendsWithHarpies + name: trait-vocal-harpies-partial-name + description: trait-vocal-harpies-partial-desc + category: Emotes + cost: 0 + conditions: + - !type:IsSpeciesCondition + species: Harpy + invert: true + effects: + - !type:OverrideCompsEffect + components: + - type: Speech + allowedEmotes: ['Meow', 'Hiss', 'Mew', 'Purr', 'Growl', 'Bark', 'Snarl', 'Whine', 'Howl', 'Awoo', 'Honk', 'HarpyRing', 'HarpyPew', 'HarpyBang', 'Beep', 'HarpyRev', 'HarpyCaw', 'Squish', 'Chitter', 'Squeak', 'Click', 'Belch', 'Squish', Bagawk] # Frontier: add Belch, Squish + +- type: trait + id: RaisedByHarpies + name: trait-vocal-harpies-full-name + description: trait-vocal-harpies-full-desc + category: Emotes + cost: 0 + conditions: + - !type:IsSpeciesCondition + species: Harpy + invert: true + effects: + - !type:OverrideCompsEffect + components: + - type: Speech + speechSounds: Harpy + speechVerb: Harpy + allowedEmotes: ['Meow', 'Hiss', 'Mew', 'Purr', 'Growl', 'Bark', 'Snarl', 'Whine', 'Howl', 'Awoo', 'Honk', 'HarpyRing', 'HarpyPew', 'HarpyBang', 'Beep', 'HarpyRev', 'HarpyCaw', 'Squish', 'Chitter', 'Squeak', 'Click', 'Belch', 'Squish', Bagawk] # Frontier: add Belch, Squish + - type: Vocal + sounds: + Male: SoundsHarpy + Female: SoundsHarpy + Unsexed: SoundsHarpy \ No newline at end of file diff --git a/Resources/Prototypes/_DV/Traits/trait_categories.yml b/Resources/Prototypes/_DV/Traits/trait_categories.yml index 33e4be93bfd..6632e03e731 100644 --- a/Resources/Prototypes/_DV/Traits/trait_categories.yml +++ b/Resources/Prototypes/_DV/Traits/trait_categories.yml @@ -31,3 +31,11 @@ priority: 50 maxPoints: 6 accentColor: "#e0e0e0" # Light gray + +# Triad +- type: traitCategory + id: Emotes + name: trait-category-emotes + priority: 31 + maxTraits: 1 + accentColor: "#edc8ff" # Light gray # Triad TODO Pick actual color From d0e2b58345ea2e78184228078d0d55345c4595be Mon Sep 17 00:00:00 2001 From: SquishyEmmaaaa <235807504+SquishyEmmaaaa@users.noreply.github.com> Date: Sun, 14 Jun 2026 14:00:40 -0700 Subject: [PATCH 02/17] Correct namespace for emotes, rename for aplphabetical sort --- Resources/Prototypes/{_DV => _Triad}/Traits/emotes.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) rename Resources/Prototypes/{_DV => _Triad}/Traits/emotes.yml (82%) diff --git a/Resources/Prototypes/_DV/Traits/emotes.yml b/Resources/Prototypes/_Triad/Traits/emotes.yml similarity index 82% rename from Resources/Prototypes/_DV/Traits/emotes.yml rename to Resources/Prototypes/_Triad/Traits/emotes.yml index 6c94e8f9375..bc65599a8a1 100644 --- a/Resources/Prototypes/_DV/Traits/emotes.yml +++ b/Resources/Prototypes/_Triad/Traits/emotes.yml @@ -1,8 +1,8 @@ # Triad New Category - type: trait id: FriendsWithHarpies - name: trait-vocal-harpies-partial-name - description: trait-vocal-harpies-partial-desc + name: trait-vocal-harpies-partial-replacement-name + description: trait-vocal-harpies-partial-replacement-desc category: Emotes cost: 0 conditions: @@ -17,8 +17,8 @@ - type: trait id: RaisedByHarpies - name: trait-vocal-harpies-full-name - description: trait-vocal-harpies-full-desc + name: trait-vocal-harpies-total-replacement-name + description: trait-vocal-harpies-total-replacement-desc category: Emotes cost: 0 conditions: @@ -36,4 +36,4 @@ sounds: Male: SoundsHarpy Female: SoundsHarpy - Unsexed: SoundsHarpy \ No newline at end of file + Unsexed: SoundsHarpy From 3e1c39c5b594a1336d176a6b23fbc81ae7049c29 Mon Sep 17 00:00:00 2001 From: SquishyEmmaaaa <235807504+SquishyEmmaaaa@users.noreply.github.com> Date: Wed, 17 Jun 2026 17:10:03 -0700 Subject: [PATCH 03/17] Adds comments to the top of the file, detailing purpose, how to edit in future, and provides template. Adds chitinid, which seem to not have speechSounds Adds vulpkanin? Parenting doesnt work --- Resources/Prototypes/_Triad/Traits/emotes.yml | 129 +++++++++++++++++- 1 file changed, 128 insertions(+), 1 deletion(-) diff --git a/Resources/Prototypes/_Triad/Traits/emotes.yml b/Resources/Prototypes/_Triad/Traits/emotes.yml index bc65599a8a1..fd1bcc847c6 100644 --- a/Resources/Prototypes/_Triad/Traits/emotes.yml +++ b/Resources/Prototypes/_Triad/Traits/emotes.yml @@ -1,4 +1,54 @@ -# Triad New Category +# Triad - New Category [Partial is replacement of emotes. Total is replacement of emotes and noise when speaking.] +# Emote and speech sound replacement. + + +# To add a new partial or total replacement trait, use the examples here. +# +# Replace with a capitalized name of the species, and with the lowercase version. +# Pull the allowedEmotes from the species yml file. This will replace what emotes someone has available. +# The components of speechSounds, speechVerb, and vocal sounds also should come from the species yml file. + + +# - type: trait +# id: FriendsWith +# name: trait-vocal--partial-replacement-name +# description: trait-vocal--partial-replacement-desc +# category: Emotes +# cost: 0 +# conditions: +# - !type:IsSpeciesCondition +# species: +# invert: true +# effects: +# - !type:OverrideCompsEffect +# components: +# - type: Speech +# allowedEmotes: + +# - type: trait +# id: RaisedBy +# name: trait-vocal--total-replacement-name +# description: trait-vocal--total-replacement-desc +# category: Emotes +# cost: 0 +# conditions: +# - !type:IsSpeciesCondition +# species: +# invert: true +# effects: +# - !type:OverrideCompsEffect +# components: +# - type: Speech +# speechSounds: +# speechVerb: +# allowedEmotes: +# - type: Vocal +# sounds: +# Male: +# Female: +# Unsexed: + + - type: trait id: FriendsWithHarpies name: trait-vocal-harpies-partial-replacement-name @@ -37,3 +87,80 @@ Male: SoundsHarpy Female: SoundsHarpy Unsexed: SoundsHarpy + +- type: trait + id: FriendsWithChitinid + name: trait-vocal-chitinid-partial-replacement-name + description: trait-vocal-chitinid-partial-replacement-desc + category: Emotes + cost: 0 + conditions: + - !type:IsSpeciesCondition + species: Chitinid + invert: true + effects: + - !type:OverrideCompsEffect + components: + - type: Speech + allowedEmotes: ['Chitter', 'Click', 'Hiss'] + +- type: trait + id: RaisedByChitinid + name: trait-vocal-chitinid-total-replacement-name + description: trait-vocal-chitinid-total-replacement-desc + category: Emotes + cost: 0 + conditions: + - !type:IsSpeciesCondition + species: Chitinid + invert: true + effects: + - !type:OverrideCompsEffect + components: + - type: Speech + speechVerb: Chitinid + allowedEmotes: ['Chitter', 'Click', 'Hiss'] + - type: Vocal + sounds: + Male: UnisexChitinid + Female: UnisexChitinid + Unsexed: UnisexChitinid + +- type: trait + id: FriendsWithVulpkanin + name: trait-vocal-vulpkanin-partial-replacement-name + description: trait-vocal-vulpkanin-partial-replacement-desc + category: Emotes + cost: 0 + conditions: + - !type:IsSpeciesCondition + species: Vulpkanin + invert: true + effects: + - !type:ReplaceCompsEffect + components: + - type: Speech + allowedEmotes: ['Bark', 'Snarl', 'Whine', 'Howl', 'Awoo', 'Growl', 'Yip', 'Whimper'] # Starlight / Monolith: Add yip, whine; rename old whine to whimper + +- type: trait + id: RaisedByVulpkanin + name: trait-vocal-vulpkanin-total-replacement-name + description: trait-vocal-vulpkanin-total-replacement-desc + category: Emotes + cost: 0 + conditions: + - !type:IsSpeciesCondition + species: Vulpkanin + invert: true + effects: + - !type:ReplaceCompsEffect + components: + - type: Speech + speechSounds: Vulpkanin + speechVerb: Vulpkanin + allowedEmotes: ['Bark', 'Snarl', 'Whine', 'Howl', 'Awoo', 'Growl', 'Yip', 'Whimper'] # Starlight / Monolith: Add yip, whine; rename old whine to whimper + - type: Vocal + sounds: + Male: MaleVulpkanin + Female: FemaleVulpkanin + Unsexed: MaleVulpkanin \ No newline at end of file From 78a7dbb5435a3053d90d8e61d2fda187fada9fae Mon Sep 17 00:00:00 2001 From: SquishyEmmaaaa <235807504+SquishyEmmaaaa@users.noreply.github.com> Date: Wed, 17 Jun 2026 17:23:07 -0700 Subject: [PATCH 04/17] Override apparently is the same as remove+add, rather than a component sub-data preserving override. So no partial emote replacements for now, since it breaks the speech effects. --- Resources/Prototypes/_Triad/Traits/emotes.yml | 76 +++---------------- 1 file changed, 10 insertions(+), 66 deletions(-) diff --git a/Resources/Prototypes/_Triad/Traits/emotes.yml b/Resources/Prototypes/_Triad/Traits/emotes.yml index fd1bcc847c6..b4d3ffe40e5 100644 --- a/Resources/Prototypes/_Triad/Traits/emotes.yml +++ b/Resources/Prototypes/_Triad/Traits/emotes.yml @@ -1,5 +1,14 @@ -# Triad - New Category [Partial is replacement of emotes. Total is replacement of emotes and noise when speaking.] +# Triad - New Category [Total is replacement of emotes and noise when speaking.] # Emote and speech sound replacement. +# Overriding the speech component with just allowedEmotes, breaks the normal speechSounds and speechVerb. +# So no partial replacement trait. +# +# +# OverrideCompsEffect wipes the component field and replaces with exactly what is specified, +# rather than replacing sub-component values when specified. +# Ideally, we would use RemCompsEffect to remove the componenet and then follow with AddCompsEffect for the items to achieve that behavior. +# And OverrideCompsEffect would ideally just replace the sub-component fields when/where values are provided. +# But thats not what was coded, so no partial replacements for now :< # To add a new partial or total replacement trait, use the examples here. @@ -9,22 +18,6 @@ # The components of speechSounds, speechVerb, and vocal sounds also should come from the species yml file. -# - type: trait -# id: FriendsWith -# name: trait-vocal--partial-replacement-name -# description: trait-vocal--partial-replacement-desc -# category: Emotes -# cost: 0 -# conditions: -# - !type:IsSpeciesCondition -# species: -# invert: true -# effects: -# - !type:OverrideCompsEffect -# components: -# - type: Speech -# allowedEmotes: - # - type: trait # id: RaisedBy # name: trait-vocal--total-replacement-name @@ -48,23 +41,6 @@ # Female: # Unsexed: - -- type: trait - id: FriendsWithHarpies - name: trait-vocal-harpies-partial-replacement-name - description: trait-vocal-harpies-partial-replacement-desc - category: Emotes - cost: 0 - conditions: - - !type:IsSpeciesCondition - species: Harpy - invert: true - effects: - - !type:OverrideCompsEffect - components: - - type: Speech - allowedEmotes: ['Meow', 'Hiss', 'Mew', 'Purr', 'Growl', 'Bark', 'Snarl', 'Whine', 'Howl', 'Awoo', 'Honk', 'HarpyRing', 'HarpyPew', 'HarpyBang', 'Beep', 'HarpyRev', 'HarpyCaw', 'Squish', 'Chitter', 'Squeak', 'Click', 'Belch', 'Squish', Bagawk] # Frontier: add Belch, Squish - - type: trait id: RaisedByHarpies name: trait-vocal-harpies-total-replacement-name @@ -88,22 +64,6 @@ Female: SoundsHarpy Unsexed: SoundsHarpy -- type: trait - id: FriendsWithChitinid - name: trait-vocal-chitinid-partial-replacement-name - description: trait-vocal-chitinid-partial-replacement-desc - category: Emotes - cost: 0 - conditions: - - !type:IsSpeciesCondition - species: Chitinid - invert: true - effects: - - !type:OverrideCompsEffect - components: - - type: Speech - allowedEmotes: ['Chitter', 'Click', 'Hiss'] - - type: trait id: RaisedByChitinid name: trait-vocal-chitinid-total-replacement-name @@ -126,22 +86,6 @@ Female: UnisexChitinid Unsexed: UnisexChitinid -- type: trait - id: FriendsWithVulpkanin - name: trait-vocal-vulpkanin-partial-replacement-name - description: trait-vocal-vulpkanin-partial-replacement-desc - category: Emotes - cost: 0 - conditions: - - !type:IsSpeciesCondition - species: Vulpkanin - invert: true - effects: - - !type:ReplaceCompsEffect - components: - - type: Speech - allowedEmotes: ['Bark', 'Snarl', 'Whine', 'Howl', 'Awoo', 'Growl', 'Yip', 'Whimper'] # Starlight / Monolith: Add yip, whine; rename old whine to whimper - - type: trait id: RaisedByVulpkanin name: trait-vocal-vulpkanin-total-replacement-name From 8b4283b77670f646b5d154d3815626d17dbf3485 Mon Sep 17 00:00:00 2001 From: AeraAulin <133451603+AeraAuling@users.noreply.github.com> Date: Thu, 17 Apr 2025 13:14:56 -0700 Subject: [PATCH 05/17] Cherry-picks kitsune audio files, sound/voice information, and typing indicators from DeltaV, but not the whole species https://github.com/DeltaV-Station/Delta-v/pull/3175/ --- .../Audio/_DV/Voice/Kitsune/attributions.yml | 14 ++++ .../Audio/_DV/Voice/Kitsune/fox_growl1.ogg | Bin 0 -> 44572 bytes .../Audio/_DV/Voice/Kitsune/fox_scream1.ogg | Bin 0 -> 7776 bytes .../Audio/_DV/Voice/Kitsune/fox_squeal1.ogg | Bin 0 -> 26110 bytes .../en-US/_NF/chat/managers/chat_manager.ftl | 6 ++ .../_DV/SoundCollections/kitsune.yml | 14 ++++ .../_DV/Voice/speech_emote_sounds.yml | 72 ++++++++++++++++++ Resources/Prototypes/_DV/typing_indicator.yml | 6 ++ .../_DV/Effects/speech.rsi/kitsune0.png | Bin 0 -> 325 bytes .../_DV/Effects/speech.rsi/kitsune1.png | Bin 0 -> 227 bytes .../_DV/Effects/speech.rsi/kitsune2.png | Bin 0 -> 214 bytes .../Textures/_DV/Effects/speech.rsi/meta.json | 19 ++++- 12 files changed, 130 insertions(+), 1 deletion(-) create mode 100644 Resources/Audio/_DV/Voice/Kitsune/attributions.yml create mode 100644 Resources/Audio/_DV/Voice/Kitsune/fox_growl1.ogg create mode 100644 Resources/Audio/_DV/Voice/Kitsune/fox_scream1.ogg create mode 100644 Resources/Audio/_DV/Voice/Kitsune/fox_squeal1.ogg create mode 100644 Resources/Prototypes/_DV/SoundCollections/kitsune.yml create mode 100644 Resources/Textures/_DV/Effects/speech.rsi/kitsune0.png create mode 100644 Resources/Textures/_DV/Effects/speech.rsi/kitsune1.png create mode 100644 Resources/Textures/_DV/Effects/speech.rsi/kitsune2.png diff --git a/Resources/Audio/_DV/Voice/Kitsune/attributions.yml b/Resources/Audio/_DV/Voice/Kitsune/attributions.yml new file mode 100644 index 00000000000..4c109b27ee2 --- /dev/null +++ b/Resources/Audio/_DV/Voice/Kitsune/attributions.yml @@ -0,0 +1,14 @@ +- files: ["fox_scream1.ogg"] + license: "CC0-1.0" + copyright: "Original sound by https://pixabay.com/users/l3hrja-38345766/" + source: "https://pixabay.com/sound-effects/fox-calling-243999/" + +- files: ["fox_growl1"] + license: "CC0-1.0" + copyright: "Original sound by https://freesound.org/people/wingz/sounds/13789/" + source: "https://freesound.org/people/wingz/sounds/13789/" + +- files: ["fox_squeal1.off"] + license: "CC-BY-4.0" + copyright: "Original sound by https://freesound.org/people/Motion_S/sounds/178412/" + source: "https://freesound.org/people/Motion_S/sounds/178412/" diff --git a/Resources/Audio/_DV/Voice/Kitsune/fox_growl1.ogg b/Resources/Audio/_DV/Voice/Kitsune/fox_growl1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..38e90d3b0cb819b582ea2a39198b080e39b45571 GIT binary patch literal 44572 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 IR@4p=04%XTs{jB1 literal 0 HcmV?d00001 diff --git a/Resources/Audio/_DV/Voice/Kitsune/fox_scream1.ogg b/Resources/Audio/_DV/Voice/Kitsune/fox_scream1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..ab442ef46c1bb010d2b216e802b969bb2345ee06 GIT binary patch literal 7776 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 literal 0 HcmV?d00001 diff --git a/Resources/Audio/_DV/Voice/Kitsune/fox_squeal1.ogg b/Resources/Audio/_DV/Voice/Kitsune/fox_squeal1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..024987eabb6a9ae2fafb52feb1f951c83eaab977 GIT binary patch literal 26110 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 Y4W7mGWbPyh0UgTV>FVdQ&MBb@05OhP6aWAK literal 0 HcmV?d00001 diff --git a/Resources/Textures/_DV/Effects/speech.rsi/kitsune2.png b/Resources/Textures/_DV/Effects/speech.rsi/kitsune2.png new file mode 100644 index 0000000000000000000000000000000000000000..ae3e9d0f7ac923db855141753e993203a4cc6957 GIT binary patch literal 214 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}6FglULn2z= zPVwezP~dUtPP}>Vzt=tXZ#y5j*GYk)e1dz^>76#?B1;=Q8s?T~2(qXvGT+ z^Vw^CJ3LHNlJ%3c=LNk|tDLnXX@{_wN>zvm6>Iky~-NL}I{{h2gtCs1z`CtAAaXnrA KT-G@yGywocc2W5N literal 0 HcmV?d00001 diff --git a/Resources/Textures/_DV/Effects/speech.rsi/meta.json b/Resources/Textures/_DV/Effects/speech.rsi/meta.json index 0654c7cc8fb..2cb0538b358 100644 --- a/Resources/Textures/_DV/Effects/speech.rsi/meta.json +++ b/Resources/Textures/_DV/Effects/speech.rsi/meta.json @@ -5,7 +5,7 @@ "y": 32 }, "license": "CC-BY-SA-3.0", - "copyright": "Felinid sprites made by Adrian16199 (Github), Rodentia sprites made by portfiend, Feroxi sprites made by BlitzTheSquishy", + "copyright": "Felinid sprites made by Adrian16199 (Github), Rodentia sprites made by portfiend, Feroxi sprites made by BlitzTheSquishy, Kitsune added in https://github.com/DeltaV-Station/Delta-v/pull/3175 no attribution provided", "states": [ { "name": "felinid0", @@ -113,6 +113,23 @@ }, { "name": "feroxi3" + }, + { + "name": "kitsune0", + "delays": [ + [ + 0.2, + 0.3, + 0.3, + 0.5 + ] + ] + }, + { + "name": "kitsune1" + }, + { + "name": "kitsune2" } ] } From a9ad81d96ea41da9699c031678dc1e54a5d8c02a Mon Sep 17 00:00:00 2001 From: SquishyEmmaaaa <235807504+SquishyEmmaaaa@users.noreply.github.com> Date: Wed, 17 Jun 2026 19:06:41 -0700 Subject: [PATCH 06/17] Initial kitsune trait selection. still some bugs to squash with it, and missing the speech verbs --- Resources/Prototypes/_Triad/Traits/emotes.yml | 46 ++++++++++++++++++- 1 file changed, 44 insertions(+), 2 deletions(-) diff --git a/Resources/Prototypes/_Triad/Traits/emotes.yml b/Resources/Prototypes/_Triad/Traits/emotes.yml index b4d3ffe40e5..5f1508227d5 100644 --- a/Resources/Prototypes/_Triad/Traits/emotes.yml +++ b/Resources/Prototypes/_Triad/Traits/emotes.yml @@ -97,7 +97,7 @@ species: Vulpkanin invert: true effects: - - !type:ReplaceCompsEffect + - !type:OverrideCompsEffect components: - type: Speech speechSounds: Vulpkanin @@ -107,4 +107,46 @@ sounds: Male: MaleVulpkanin Female: FemaleVulpkanin - Unsexed: MaleVulpkanin \ No newline at end of file + Unsexed: MaleVulpkanin + +- type: trait + id: RaisedByKitsune + name: trait-vocal-kitsune-total-replacement-name + description: trait-vocal-kitsune-total-replacement-desc + category: Emotes + cost: 0 + conditions: + - !type:AnyOfCondition + conditions: + - !type:IsSpeciesCondition + species: Vulpkanin + - !type:IsSpeciesCondition + species: Human + - !type:IsSpeciesCondition + species: Felinid + effects: + - !type:OverrideCompsEffect + components: + - type: Speech + speechSounds: Alto + allowedEmotes: ['Growl', 'Squeak'] + - type: Vocal + sounds: + Male: MaleKitsune + Female: FemaleKitsune + Unsexed: MaleKitsune + - type: TypingIndicator + proto: kitsune + - type: InteractionPopup + successChance: 0.5 + interactSuccessString: petting-success-soft-floofy-kitsune + interactFailureString: petting-failure-generic + interactSuccessSpawn: EffectHearts + interactSuccessSound: + path: /Audio/Animals/fox_squeak.ogg + - type: PseudoItem + storedOffset: "0,17" + shape: + - 0,0,1,4 + - 0,2,3,4 + - 4,0,5,4 \ No newline at end of file From f50342a73510a3ad2ba692cc736d419c9f1b4993 Mon Sep 17 00:00:00 2001 From: SquishyEmmaaaa <235807504+SquishyEmmaaaa@users.noreply.github.com> Date: Wed, 17 Jun 2026 19:24:43 -0700 Subject: [PATCH 07/17] Brings in some of the emotes from Hardlight, since kitsune/fops are a mix of vulp and felinid Adds idle state to the chat indicator --- .../_DV/Voice/speech_emote_sounds.yml | 32 +++++++++++++++++++ Resources/Prototypes/_DV/typing_indicator.yml | 1 + 2 files changed, 33 insertions(+) diff --git a/Resources/Prototypes/_DV/Voice/speech_emote_sounds.yml b/Resources/Prototypes/_DV/Voice/speech_emote_sounds.yml index d7c8ab9591b..72429a6728c 100644 --- a/Resources/Prototypes/_DV/Voice/speech_emote_sounds.yml +++ b/Resources/Prototypes/_DV/Voice/speech_emote_sounds.yml @@ -424,6 +424,22 @@ collection: MaleGasp DefaultDeathgasp: collection: MaleDeathGasp + # Begin HardLight + Snarl: + collection: VulpkaninSnarls + Bark: + collection: VulpkaninBarks + Whine: + collection: VulpkaninWhines + Purr: + collection: FelinidPurrs + Howl: + collection: VulpkaninHowls + Yip: + path: /Audio/_Starlight/Effects/yip.ogg + Pout: + collection: Whine + # End Hardlight - type: emoteSounds id: FemaleKitsune @@ -460,3 +476,19 @@ collection: FemaleGasp DefaultDeathgasp: collection: FemaleDeathGasp + # Begin Hardlight + Snarl: + collection: VulpkaninSnarls + Bark: + collection: VulpkaninBarks + Whine: + collection: VulpkaninWhines + Howl: + collection: VulpkaninHowls + Purr: + collection: FelinidPurrs + Yip: + path: /Audio/_Starlight/Effects/yip.ogg + Pout: + collection: Whine + # End Hardlight diff --git a/Resources/Prototypes/_DV/typing_indicator.yml b/Resources/Prototypes/_DV/typing_indicator.yml index f471fd7c9d1..43f0a34f88d 100644 --- a/Resources/Prototypes/_DV/typing_indicator.yml +++ b/Resources/Prototypes/_DV/typing_indicator.yml @@ -29,4 +29,5 @@ id: kitsune spritePath: /Textures/_DV/Effects/speech.rsi typingState: kitsune0 + idleState: kitsune0 offset: 0, 0.25 From 34cc59cced6fa1550e4ff3900a83385425857958 Mon Sep 17 00:00:00 2001 From: Lily Autumn Date: Thu, 22 May 2025 13:44:14 +1200 Subject: [PATCH 08/17] Brings in Yip audio file from starlight, and some tweaks to the emote ftl an stuff --- Resources/Audio/_Starlight/Effects/yip.ogg | Bin 0 -> 7897 bytes .../Locale/en-US/_Starlight/chat/emotes.ftl | 13 +++++++++++++ .../Locale/en-US/chat/managers/chat-manager.ftl | 1 + Resources/Prototypes/Voice/speech_verbs.yml | 1 + .../_StarLight/Voice/speech_emotes.yml | 9 ++++++++- 5 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 Resources/Audio/_Starlight/Effects/yip.ogg diff --git a/Resources/Audio/_Starlight/Effects/yip.ogg b/Resources/Audio/_Starlight/Effects/yip.ogg new file mode 100644 index 0000000000000000000000000000000000000000..af9ba6c30f2d501f60033ead51da0e27c7d28686 GIT binary patch literal 7897 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 literal 0 HcmV?d00001 diff --git a/Resources/Locale/en-US/_Starlight/chat/emotes.ftl b/Resources/Locale/en-US/_Starlight/chat/emotes.ftl index 5f4edd3301f..6786d0acfc3 100644 --- a/Resources/Locale/en-US/_Starlight/chat/emotes.ftl +++ b/Resources/Locale/en-US/_Starlight/chat/emotes.ftl @@ -1,3 +1,4 @@ +# Emote Names chat-emote-name-scree = Scree chat-emote-name-call = Call chat-emote-name-squawk = Squawk @@ -5,10 +6,22 @@ chat-emote-name-squawk = Squawk # chat-emote-name-hiss = Hiss chat-emote-name-purr = Purr chat-emote-name-growl = Growl +chat-emote-name-bark = Bark +chat-emote-name-yip = Yip +# Emote Messages chat-emote-msg-scree = screes. chat-emote-msg-call = calls. chat-emote-msg-squawk = squawks. # Triad: orphaned Starlight keys (typo'd, no prototype references them); commented out, not deleted, so upstream merges surface them # chat-emote-msg-lurr = purrs. # chat-emote-msg-liss = hisses. +chat-emote-msg-mew = mews +chat-emote-msg-hiss = hisses +chat-emote-msg-purr = purrs +chat-emote-msg-meow = meows +chat-emote-msg-trill = trills +chat-emote-msg-howl = howls +chat-emote-msg-growl = growls +chat-emote-msg-bark = barks +chat-emote-msg-yip = yips diff --git a/Resources/Locale/en-US/chat/managers/chat-manager.ftl b/Resources/Locale/en-US/chat/managers/chat-manager.ftl index 9733f7fd0d8..58a19b7e87f 100644 --- a/Resources/Locale/en-US/chat/managers/chat-manager.ftl +++ b/Resources/Locale/en-US/chat/managers/chat-manager.ftl @@ -129,6 +129,7 @@ chat-speech-verb-name-canine = Canine chat-speech-verb-canine-1 = barks chat-speech-verb-canine-2 = woofs chat-speech-verb-canine-3 = howls +chat-speech-verb-canine-4 = yips #starlight chat-speech-verb-name-goat = Goat chat-speech-verb-goat-1 = bleats diff --git a/Resources/Prototypes/Voice/speech_verbs.yml b/Resources/Prototypes/Voice/speech_verbs.yml index f8202847fd6..f96baa4ad25 100644 --- a/Resources/Prototypes/Voice/speech_verbs.yml +++ b/Resources/Prototypes/Voice/speech_verbs.yml @@ -109,6 +109,7 @@ - chat-speech-verb-canine-1 - chat-speech-verb-canine-2 - chat-speech-verb-canine-3 + - chat-speech-verb-canine-4 #starlight - type: speechVerb id: Goat diff --git a/Resources/Prototypes/_StarLight/Voice/speech_emotes.yml b/Resources/Prototypes/_StarLight/Voice/speech_emotes.yml index 177fa5cca3f..97b2e141410 100644 --- a/Resources/Prototypes/_StarLight/Voice/speech_emotes.yml +++ b/Resources/Prototypes/_StarLight/Voice/speech_emotes.yml @@ -19,16 +19,23 @@ name: chat-emote-name-yip category: Vocal available: false - chatMessages: ["chat-emote-msg-yip"] # Triad: was literal `yips.` + icon: Interface/Actions/scream.png whitelist: components: - Vocal blacklist: components: - BorgChassis + chatMessages: ["chat-emote-msg-yip"] chatTriggers: - yip + - yip. + - yip? + - yip! - yips + - yips. + - yips? + - yips! - type: emote id: Scree From 59308dd72e15f01df4b859d13a8d4b9e5a91d1be Mon Sep 17 00:00:00 2001 From: SquishyEmmaaaa <235807504+SquishyEmmaaaa@users.noreply.github.com> Date: Wed, 17 Jun 2026 19:55:07 -0700 Subject: [PATCH 09/17] The yip from starlight is just from the fox noises. https://github.com/space-wizards/space-station-14/pull/27578/ --- Resources/Audio/_Starlight/Effects/yip.ogg | Bin 7897 -> 0 bytes .../Prototypes/_DV/Voice/speech_emote_sounds.yml | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) delete mode 100644 Resources/Audio/_Starlight/Effects/yip.ogg diff --git a/Resources/Audio/_Starlight/Effects/yip.ogg b/Resources/Audio/_Starlight/Effects/yip.ogg deleted file mode 100644 index af9ba6c30f2d501f60033ead51da0e27c7d28686..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7897 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 diff --git a/Resources/Prototypes/_DV/Voice/speech_emote_sounds.yml b/Resources/Prototypes/_DV/Voice/speech_emote_sounds.yml index 72429a6728c..589ac8eb166 100644 --- a/Resources/Prototypes/_DV/Voice/speech_emote_sounds.yml +++ b/Resources/Prototypes/_DV/Voice/speech_emote_sounds.yml @@ -436,7 +436,7 @@ Howl: collection: VulpkaninHowls Yip: - path: /Audio/_Starlight/Effects/yip.ogg + path: /Audio/Animals/fox_squeak.ogg Pout: collection: Whine # End Hardlight @@ -488,7 +488,7 @@ Purr: collection: FelinidPurrs Yip: - path: /Audio/_Starlight/Effects/yip.ogg + path: /Audio/Animals/fox_squeak.ogg Pout: collection: Whine # End Hardlight From 59f558d9071d2a5507504da687321737fe990cd0 Mon Sep 17 00:00:00 2001 From: SquishyEmmaaaa <235807504+SquishyEmmaaaa@users.noreply.github.com> Date: Wed, 17 Jun 2026 19:58:01 -0700 Subject: [PATCH 10/17] Copies the sound collection from https://github.com/space-wizards/space-station-14/pull/27578 to reuse for pouts, but removes the squeak --- .../Prototypes/_Triad/SoundCollections/pout.yml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 Resources/Prototypes/_Triad/SoundCollections/pout.yml diff --git a/Resources/Prototypes/_Triad/SoundCollections/pout.yml b/Resources/Prototypes/_Triad/SoundCollections/pout.yml new file mode 100644 index 00000000000..602fbf0e44b --- /dev/null +++ b/Resources/Prototypes/_Triad/SoundCollections/pout.yml @@ -0,0 +1,17 @@ +- type: soundCollection + id: Pout + files: + - /Audio/Animals/fox1.ogg + - /Audio/Animals/fox2.ogg + - /Audio/Animals/fox3.ogg + - /Audio/Animals/fox4.ogg + - /Audio/Animals/fox5.ogg + - /Audio/Animals/fox6.ogg + - /Audio/Animals/fox7.ogg + - /Audio/Animals/fox8.ogg + - /Audio/Animals/fox9.ogg + - /Audio/Animals/fox10.ogg + - /Audio/Animals/fox11.ogg + - /Audio/Animals/fox12.ogg + - /Audio/Animals/fox13.ogg + - /Audio/Animals/fox14.ogg \ No newline at end of file From 5e25244e3f7c18af7eb9bac8ea1608181bcb8924 Mon Sep 17 00:00:00 2001 From: SquishyEmmaaaa <235807504+SquishyEmmaaaa@users.noreply.github.com> Date: Wed, 17 Jun 2026 21:31:57 -0700 Subject: [PATCH 11/17] moves the speech verb ftls to the correct namespace --- .../en-US/_DV/chat/managers/chat_manager.ftl | 23 ++++++++++++++++++ .../en-US/_NF/chat/managers/chat_manager.ftl | 24 ------------------- 2 files changed, 23 insertions(+), 24 deletions(-) create mode 100644 Resources/Locale/en-US/_DV/chat/managers/chat_manager.ftl diff --git a/Resources/Locale/en-US/_DV/chat/managers/chat_manager.ftl b/Resources/Locale/en-US/_DV/chat/managers/chat_manager.ftl new file mode 100644 index 00000000000..652e5016f25 --- /dev/null +++ b/Resources/Locale/en-US/_DV/chat/managers/chat_manager.ftl @@ -0,0 +1,23 @@ +chat-speech-verb-name-rodentia = Rodentia +chat-speech-verb-rodentia-1 = squeaks +chat-speech-verb-rodentia-2 = pieps +chat-speech-verb-rodentia-3 = chatters +chat-speech-verb-rodentia-4 = squeals + +chat-speech-verb-name-chitinid = Chitinid +chat-speech-verb-chitinid-1 = clicks +chat-speech-verb-chitinid-2 = chitters +chat-speech-verb-chitinid-3 = hisses +chat-speech-verb-chitinid-4 = buzzes + +chat-speech-verb-name-kitsune = Kitsune +chat-speech-verb-kitsune-1 = yelps +chat-speech-verb-kitsune-2 = barks +chat-speech-verb-kitsune-3 = whines +chat-speech-verb-kitsune-4 = yips + +chat-speech-verb-name-feroxi = Feroxi +chat-speech-verb-feroxi-1 = blubs +chat-speech-verb-feroxi-2 = swishes +chat-speech-verb-feroxi-3 = gnashes +chat-speech-verb-feroxi-4 = growls \ No newline at end of file diff --git a/Resources/Locale/en-US/_NF/chat/managers/chat_manager.ftl b/Resources/Locale/en-US/_NF/chat/managers/chat_manager.ftl index 4df0d533331..897a4cb0375 100644 --- a/Resources/Locale/en-US/_NF/chat/managers/chat_manager.ftl +++ b/Resources/Locale/en-US/_NF/chat/managers/chat_manager.ftl @@ -23,27 +23,3 @@ chat-speech-verb-goblin-2 = vokers chat-speech-verb-goblin-3 = blurts out chat-speech-verb-goblin-4 = patters chat-speech-verb-goblin-5 = cuts - -chat-speech-verb-name-rodentia = Rodentia -chat-speech-verb-rodentia-1 = squeaks -chat-speech-verb-rodentia-2 = pieps -chat-speech-verb-rodentia-3 = chatters -chat-speech-verb-rodentia-4 = squeals - -chat-speech-verb-name-chitinid = Chitinid -chat-speech-verb-chitinid-1 = clicks -chat-speech-verb-chitinid-2 = chitters -chat-speech-verb-chitinid-3 = hisses -chat-speech-verb-chitinid-4 = buzzes - -chat-speech-verb-name-kitsune = Kitsune -chat-speech-verb-kitsune-1 = yelps -chat-speech-verb-kitsune-2 = barks -chat-speech-verb-kitsune-3 = whines -chat-speech-verb-kitsune-4 = yips - -chat-speech-verb-name-feroxi = Feroxi -chat-speech-verb-feroxi-1 = blubs -chat-speech-verb-feroxi-2 = swishes -chat-speech-verb-feroxi-3 = gnashes -chat-speech-verb-feroxi-4 = growls From 5d2eb29050429f59bbb554fb46d2091af96370a8 Mon Sep 17 00:00:00 2001 From: SquishyEmmaaaa <235807504+SquishyEmmaaaa@users.noreply.github.com> Date: Wed, 17 Jun 2026 21:33:30 -0700 Subject: [PATCH 12/17] Applies Kitsune Speech verb to kitsune trait Gives the Kitsunes some of the emotes from Hardlight, but not all --- .../_DV/Voice/speech_emote_sounds.yml | 2 +- Resources/Prototypes/_DV/Voice/speech_verbs.yml | 9 +++++++++ .../Prototypes/_HL/Voice/speech_emotes.yml | 17 +++++++++++++++++ Resources/Prototypes/_Triad/Traits/emotes.yml | 3 ++- 4 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 Resources/Prototypes/_HL/Voice/speech_emotes.yml diff --git a/Resources/Prototypes/_DV/Voice/speech_emote_sounds.yml b/Resources/Prototypes/_DV/Voice/speech_emote_sounds.yml index 589ac8eb166..da96d83f210 100644 --- a/Resources/Prototypes/_DV/Voice/speech_emote_sounds.yml +++ b/Resources/Prototypes/_DV/Voice/speech_emote_sounds.yml @@ -490,5 +490,5 @@ Yip: path: /Audio/Animals/fox_squeak.ogg Pout: - collection: Whine + collection: VulpkaninWhines # End Hardlight diff --git a/Resources/Prototypes/_DV/Voice/speech_verbs.yml b/Resources/Prototypes/_DV/Voice/speech_verbs.yml index 28511a1a6a6..9efcb6c1b32 100644 --- a/Resources/Prototypes/_DV/Voice/speech_verbs.yml +++ b/Resources/Prototypes/_DV/Voice/speech_verbs.yml @@ -52,3 +52,12 @@ - chat-speech-verb-feroxi-2 - chat-speech-verb-feroxi-3 - chat-speech-verb-feroxi-4 + +- type: speechVerb + id: Kitsune + name: chat-speech-verb-name-kitsune + speechVerbStrings: + - chat-speech-verb-kitsune-1 + - chat-speech-verb-kitsune-2 + - chat-speech-verb-kitsune-3 + - chat-speech-verb-kitsune-4 diff --git a/Resources/Prototypes/_HL/Voice/speech_emotes.yml b/Resources/Prototypes/_HL/Voice/speech_emotes.yml new file mode 100644 index 00000000000..88f67032666 --- /dev/null +++ b/Resources/Prototypes/_HL/Voice/speech_emotes.yml @@ -0,0 +1,17 @@ +- type: emote + id: Pout + name: chat-emote-name-pout + category: Vocal + available: false + whitelist: + components: + - Vocal + blacklist: + tags: + - SiliconEmotes + chatMessages: ["chat-emote-msg-pout"] + chatTriggers: + - pout + - pouts + - pouted + - pouting \ No newline at end of file diff --git a/Resources/Prototypes/_Triad/Traits/emotes.yml b/Resources/Prototypes/_Triad/Traits/emotes.yml index 5f1508227d5..bf1e7aadf1c 100644 --- a/Resources/Prototypes/_Triad/Traits/emotes.yml +++ b/Resources/Prototypes/_Triad/Traits/emotes.yml @@ -129,7 +129,8 @@ components: - type: Speech speechSounds: Alto - allowedEmotes: ['Growl', 'Squeak'] + speechVerb: Kitsune + allowedEmotes: [ 'Squeak', 'Growl', 'Snarl', 'Bark', 'Whine', 'Howl', 'Purr', 'Yip', 'Pout' ] - type: Vocal sounds: Male: MaleKitsune From a76127d63420b7a30a5496e5f32be7ca156915ad Mon Sep 17 00:00:00 2001 From: SquishyEmmaaaa <235807504+SquishyEmmaaaa@users.noreply.github.com> Date: Wed, 17 Jun 2026 21:37:37 -0700 Subject: [PATCH 13/17] Cleans up Vulpkanin conditions Comment out chitind --- Resources/Prototypes/_Triad/Traits/emotes.yml | 48 +++++++++++-------- 1 file changed, 27 insertions(+), 21 deletions(-) diff --git a/Resources/Prototypes/_Triad/Traits/emotes.yml b/Resources/Prototypes/_Triad/Traits/emotes.yml index bf1e7aadf1c..57b07b8e46d 100644 --- a/Resources/Prototypes/_Triad/Traits/emotes.yml +++ b/Resources/Prototypes/_Triad/Traits/emotes.yml @@ -64,27 +64,27 @@ Female: SoundsHarpy Unsexed: SoundsHarpy -- type: trait - id: RaisedByChitinid - name: trait-vocal-chitinid-total-replacement-name - description: trait-vocal-chitinid-total-replacement-desc - category: Emotes - cost: 0 - conditions: - - !type:IsSpeciesCondition - species: Chitinid - invert: true - effects: - - !type:OverrideCompsEffect - components: - - type: Speech - speechVerb: Chitinid - allowedEmotes: ['Chitter', 'Click', 'Hiss'] - - type: Vocal - sounds: - Male: UnisexChitinid - Female: UnisexChitinid - Unsexed: UnisexChitinid +# - type: trait +# id: RaisedByChitinid +# name: trait-vocal-chitinid-total-replacement-name +# description: trait-vocal-chitinid-total-replacement-desc +# category: Emotes +# cost: 0 +# conditions: +# - !type:IsSpeciesCondition +# species: Chitinid +# invert: true +# effects: +# - !type:OverrideCompsEffect +# components: +# - type: Speech +# speechVerb: Chitinid +# allowedEmotes: ['Chitter', 'Click', 'Hiss'] +# - type: Vocal +# sounds: +# Male: UnisexChitinid +# Female: UnisexChitinid +# Unsexed: UnisexChitinid - type: trait id: RaisedByVulpkanin @@ -96,6 +96,12 @@ - !type:IsSpeciesCondition species: Vulpkanin invert: true + - !type:AnyOfCondition + conditions: + - !type:IsSpeciesCondition + species: Human + - !type:IsSpeciesCondition + species: Felinid effects: - !type:OverrideCompsEffect components: From c7f8599d21c56f1c0bbb3c03a2b5b7874002c3b3 Mon Sep 17 00:00:00 2001 From: SquishyEmmaaaa <235807504+SquishyEmmaaaa@users.noreply.github.com> Date: Wed, 17 Jun 2026 21:38:27 -0700 Subject: [PATCH 14/17] Will deal with chitinids another day maybe. Get the easier ones going for now. --- Resources/Prototypes/_Triad/Traits/emotes.yml | 22 ------------------- 1 file changed, 22 deletions(-) diff --git a/Resources/Prototypes/_Triad/Traits/emotes.yml b/Resources/Prototypes/_Triad/Traits/emotes.yml index 57b07b8e46d..5559dd17e60 100644 --- a/Resources/Prototypes/_Triad/Traits/emotes.yml +++ b/Resources/Prototypes/_Triad/Traits/emotes.yml @@ -64,28 +64,6 @@ Female: SoundsHarpy Unsexed: SoundsHarpy -# - type: trait -# id: RaisedByChitinid -# name: trait-vocal-chitinid-total-replacement-name -# description: trait-vocal-chitinid-total-replacement-desc -# category: Emotes -# cost: 0 -# conditions: -# - !type:IsSpeciesCondition -# species: Chitinid -# invert: true -# effects: -# - !type:OverrideCompsEffect -# components: -# - type: Speech -# speechVerb: Chitinid -# allowedEmotes: ['Chitter', 'Click', 'Hiss'] -# - type: Vocal -# sounds: -# Male: UnisexChitinid -# Female: UnisexChitinid -# Unsexed: UnisexChitinid - - type: trait id: RaisedByVulpkanin name: trait-vocal-vulpkanin-total-replacement-name From 040b068a535d49b73a10d069cab1881c1e8dcaf4 Mon Sep 17 00:00:00 2001 From: SquishyEmmaaaa <235807504+SquishyEmmaaaa@users.noreply.github.com> Date: Wed, 17 Jun 2026 22:43:21 -0700 Subject: [PATCH 15/17] Fix whine to the correct sound collection. Use BorgChassis not SiliconEmotes --- Resources/Prototypes/_DV/Voice/speech_emote_sounds.yml | 4 ++-- Resources/Prototypes/_HL/Voice/speech_emotes.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Resources/Prototypes/_DV/Voice/speech_emote_sounds.yml b/Resources/Prototypes/_DV/Voice/speech_emote_sounds.yml index da96d83f210..b46a64e4952 100644 --- a/Resources/Prototypes/_DV/Voice/speech_emote_sounds.yml +++ b/Resources/Prototypes/_DV/Voice/speech_emote_sounds.yml @@ -430,7 +430,7 @@ Bark: collection: VulpkaninBarks Whine: - collection: VulpkaninWhines + collection: VulpkaninWhimpers Purr: collection: FelinidPurrs Howl: @@ -482,7 +482,7 @@ Bark: collection: VulpkaninBarks Whine: - collection: VulpkaninWhines + collection: VulpkaninWhimpers Howl: collection: VulpkaninHowls Purr: diff --git a/Resources/Prototypes/_HL/Voice/speech_emotes.yml b/Resources/Prototypes/_HL/Voice/speech_emotes.yml index 88f67032666..61967fc4b05 100644 --- a/Resources/Prototypes/_HL/Voice/speech_emotes.yml +++ b/Resources/Prototypes/_HL/Voice/speech_emotes.yml @@ -8,7 +8,7 @@ - Vocal blacklist: tags: - - SiliconEmotes + - BorgChassis chatMessages: ["chat-emote-msg-pout"] chatTriggers: - pout From 35e835bccc31887e40531ebf97c25f47b5c26a7d Mon Sep 17 00:00:00 2001 From: SquishyEmmaaaa <235807504+SquishyEmmaaaa@users.noreply.github.com> Date: Wed, 17 Jun 2026 22:44:46 -0700 Subject: [PATCH 16/17] Cleans up some whitespace Comments out stuff that needs work still for later PR Adds conditions to the Harpy Emotes --- Resources/Prototypes/_Triad/Traits/emotes.yml | 54 ++++++++++--------- 1 file changed, 30 insertions(+), 24 deletions(-) diff --git a/Resources/Prototypes/_Triad/Traits/emotes.yml b/Resources/Prototypes/_Triad/Traits/emotes.yml index 5559dd17e60..ebd211f488a 100644 --- a/Resources/Prototypes/_Triad/Traits/emotes.yml +++ b/Resources/Prototypes/_Triad/Traits/emotes.yml @@ -51,6 +51,12 @@ - !type:IsSpeciesCondition species: Harpy invert: true + - !type:AnyOfCondition + conditions: + - !type:IsSpeciesCondition + species: Avali + - !type:IsSpeciesCondition + species: Resomi effects: - !type:OverrideCompsEffect components: @@ -111,27 +117,27 @@ effects: - !type:OverrideCompsEffect components: - - type: Speech - speechSounds: Alto - speechVerb: Kitsune - allowedEmotes: [ 'Squeak', 'Growl', 'Snarl', 'Bark', 'Whine', 'Howl', 'Purr', 'Yip', 'Pout' ] - - type: Vocal - sounds: - Male: MaleKitsune - Female: FemaleKitsune - Unsexed: MaleKitsune - - type: TypingIndicator - proto: kitsune - - type: InteractionPopup - successChance: 0.5 - interactSuccessString: petting-success-soft-floofy-kitsune - interactFailureString: petting-failure-generic - interactSuccessSpawn: EffectHearts - interactSuccessSound: - path: /Audio/Animals/fox_squeak.ogg - - type: PseudoItem - storedOffset: "0,17" - shape: - - 0,0,1,4 - - 0,2,3,4 - - 4,0,5,4 \ No newline at end of file + - type: Speech + speechSounds: Alto + speechVerb: Kitsune + allowedEmotes: [ 'Squeak', 'Growl', 'Snarl', 'Bark', 'Whine', 'Howl', 'Purr', 'Yip', 'Pout' ] + - type: Vocal + sounds: + Male: MaleKitsune + Female: FemaleKitsune + Unsexed: MaleKitsune + # - type: TypingIndicator # Triad - No idea why typing indicator isnt overriding. Remove and override doesn't fix either. Deosn't work with trying to give felinid either. + # proto: kitsune + # - type: InteractionPopup # Triad - Was giving both hug and hearts. Need to fix before implemented. + # successChance: 0.5 + # interactSuccessString: petting-success-soft-floofy-kitsune + # interactFailureString: petting-failure-generic + # interactSuccessSpawn: EffectHearts + # interactSuccessSound: + # path: /Audio/Animals/fox_squeak.ogg + - type: PseudoItem + storedOffset: "0,17" + shape: + - 0,0,1,4 + - 0,2,3,4 + - 4,0,5,4 \ No newline at end of file From d534bb16babb7c58a8d78733d703d12394f4539d Mon Sep 17 00:00:00 2001 From: SquishyEmmaaaa <235807504+SquishyEmmaaaa@users.noreply.github.com> Date: Thu, 18 Jun 2026 01:22:01 -0700 Subject: [PATCH 17/17] Oops, thats a component not a tag anymore --- Resources/Prototypes/_HL/Voice/speech_emotes.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/_HL/Voice/speech_emotes.yml b/Resources/Prototypes/_HL/Voice/speech_emotes.yml index 61967fc4b05..dd4509f299e 100644 --- a/Resources/Prototypes/_HL/Voice/speech_emotes.yml +++ b/Resources/Prototypes/_HL/Voice/speech_emotes.yml @@ -7,7 +7,7 @@ components: - Vocal blacklist: - tags: + components: - BorgChassis chatMessages: ["chat-emote-msg-pout"] chatTriggers: