Skip to content

Ovinia Cherry Pick - #629

Open
Shajoisafrog wants to merge 29 commits into
Triad-Sector:mainfrom
Shajoisafrog:Ovinia-LS
Open

Shajoisafrog wants to merge 29 commits into
Triad-Sector:mainfrom
Shajoisafrog:Ovinia-LS

Conversation

@Shajoisafrog

@Shajoisafrog Shajoisafrog commented Sep 9, 2026

Copy link
Copy Markdown

About the PR

Adds in the Ovinia species along with their animal friendship buff, sleepy debuff, and basic markings with hair/beards.

The animal friendship buff allows Ovinians to not be attacked by the following unless they strike first. This is utilized by existing code brought with the PR that adds a flag to the following creatures:

bees
boxing kangaroo
space kangaroo
space bear
angry slimes

The SuperSleepy code was removed as I felt it unfixable with my current skills and do not wish to utilize AI as a means to do the work.

Why / Balance

This was a requested port from the Den for the species along with their associated base species bonuses and detriments.

Media

image image image image

Requirements

  • [x ] I have read Attributing Your Changes and the documentation relevant to this PR.
  • [x ] I have added media to this PR or it does not require an ingame showcase.
  • [ x] I can confirm this PR contains either no AI-generated content, or AI-generated content that meets our guidelines.

How to test

Fired them up in game, tested hair and beards + coloration, tested basic markings, tested damage in game and healing, tested suffocation and barotrauma, spawned what mobs I had available and made sure the ones that should ignore Ovinia do and things like carp/dragons still eat them. Tested sound emojis in game, ensured talking bubble sprite worked.

Breaking changes

Nothing should be broken in this. I hope. God help me. I hate code.

Changelog
🆑

  • add: Added Ovinia, a species of goat/sheep/cow/deer/etc herbivors from the planet Runia, known for their relaxed and peaceful nature and considered to be the shepherds of the galaxy.

juniwoofs and others added 14 commits September 9, 2026 10:13
* strain sheepin it and by it? lets just say my ovinia ahahaa you know waht im sheepin aahahahahah yeah im kinda sheepiieee ladies ladies one at a time theres enough sheepie for all of y'all ouuuugh

* false (morgan freeman face)

* supersleepy

* attribution fix (OOPS)

* comment clarification!

* emotes fix + snout fix

* hoofies update

* betterpetter

* flamability

* guidebook

* removed EE holdover code

* friens

* Names and guidebook finish

* feat: EatTimeModifier component (Triad-Sector#1)

* feat: add SlowEater component

* refactor: SlowEater>EatTimeModifier

* style: fix comment

* refactor: use events instead

* chore: add to ovinia

* style: fix comment in ovinia.yml

* style: move comment to correct line for consistency

* screams + fixes

* fixing the default tail LOL

* dey breathe dat oxygen

* voice

* oopsie

* Update Ovinia.xml

* voicefixes

* foobaaaaghbjksnlbASDFJKLHBN;ASVBN;RS bl;asfkbnlwralfn screams

* sheeppie moadie

* do the things

* document, oops

* add entity whitelist. why? i dunno.

* no entity whitelist, just rename it

* oh im a fool

* twice over

* finalfixtasyxiv

---------

Co-authored-by: mqole <anactualpanacea@gmail.com>
Co-authored-by: Kip <32859367+kipdotnet@users.noreply.github.com>
Co-authored-by: Falcon <falcon@zigtag.dev>
Co-authored-by: sleepyyapril <flyingkarii@gmail.com>
# Conflicts:
#	Content.Shared/Bed/Sleep/SleepingSystem.cs
#	Content.Shared/Nutrition/EntitySystems/IngestionSystem.API.cs
#	Resources/Locale/en-US/_MACRO/chat/chat-managers.ftl
#	Resources/Locale/en-US/_MACRO/chat/emotes.ftl
#	Resources/Locale/en-US/_MACRO/species/species.ftl
#	Resources/Prototypes/Entities/Mobs/NPCs/slimes.yml
#	Resources/Prototypes/Entities/Mobs/NPCs/space.yml
#	Resources/Prototypes/Guidebook/species.yml
#	Resources/Prototypes/Loadouts/Miscellaneous/survival.yml
#	Resources/Prototypes/_MACRO/Guidebook/species.yml
#	Resources/Prototypes/_MACRO/Voice/speech_emotes.yml
#	Resources/Prototypes/_MACRO/tags.yml
#	Resources/Prototypes/_MACRO/typing_indicator.yml
#	Resources/Prototypes/ai_factions.yml
#	Resources/Textures/_DV/Effects/speech.rsi/meta.json
#	Resources/Textures/_DV/Effects/speech.rsi/ovinia-idle.png
#	Resources/Textures/_DV/Effects/speech.rsi/ovinia0.png
#	Resources/Textures/_DV/Effects/speech.rsi/ovinia2.png
Digestion should remain the same but the 'they need to eat slower' thing that this tried to do is too much for me to want to fix for .25 seconds longer eating time and removing the ingestion system because IDK what it actually does for us but we have existing code for digesting things
DefaultHostile was in the wrong location for Animal Friend
Fixing the YML file to match other marking groups. Increased limit on head top to 2 to allow ears and horns.
More organ fixes and removing a missed enum foot
Had to fix the ovinia body types, whitelists on the horns, default voices, typing indicators locations (Still needs to be tested), speech emotes to kill a duplicate nyanotrasen hissing voice emote (Because the linter said so), and relocated the ovinia files to Triad folders and not Macro in Local\en-US
Apparently they were disabled by default at round start for creation and their guidebook was a human because reasons.
Had to use copilot on this one. Apparently loading into my local server as a direct connect and then trying to respawn/ghost to respawn would crash the entire thing because of this one thing. Alongside this, ovinia were missing sprite location files as part of the ovinia.yml
Includes male and female sprite separation, didn't know it needed that, and fixes to head markings / dummy
Naming conventions and hair/beards
# Conflicts:
#	Resources/Prototypes/_MACRO/Body/Species/ovinia.yml
AFTER FIST FIGHTING FUCKING GOD, HERE WE ARE
SuperSleepy full removal as it flags a linter error that I can not fix and, at present, has too much AI influence in the fix to be suitable for PR.
@github-actions github-actions Bot added size/M C# YML Sprites FTL Changes to localization files Docs Improvements or additions to documentation/guidebooks Audio S: Untriaged and removed size/M labels Sep 9, 2026
@github-actions

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

RSI Diff Bot; head commit 9684668 merging into 7b7ea65
This PR makes changes to 1 or more RSIs. Here is a summary of all changes:

Resources/Textures/_DV/Effects/speech.rsi

State Old New Status
ovinia-idle Added
ovinia0 Added
ovinia2 Added

Resources/Textures/_Triad/Mobs/Customization/Ovinia/body_markings.rsi

State Old New Status
hand-hoof-left Added
hand-hoof-right Added
ovinia-arm-valais-left Added
ovinia-arm-valais-right Added
ovinia-full-f Added
ovinia-full-m Added
ovinia-hoof-left Added
ovinia-hoof-right Added
ovinia-leg-valais-left Added
ovinia-leg-valais-right Added
ovinia-tummy Added
torso-cow-f Added
torso-cow-m Added
torso-fawn Added

Resources/Textures/_Triad/Mobs/Customization/Ovinia/ear_markings.rsi

State Old New Status
cow-ears-inner Added
cow-ears Added
deer-ears-inner Added
deer-ears Added
horse-ears-inner Added
horse-ears Added
ovinia-ears-inner Added
ovinia-ears Added

Resources/Textures/_Triad/Mobs/Customization/Ovinia/head_markings.rsi

State Old New Status
ovinia-neck-fluff Added

Resources/Textures/_Triad/Mobs/Customization/Ovinia/horn_markings.rsi

State Old New Status
ovinia-baphomet-horns Added
ovinia-curved-horns Added
ovinia-deer-horns Added
ovinia-devil-horns Added
ovinia-ibex-horns Added
ovinia-jacob-horns Added
ovinia-lamb-horns Added
ovinia-pointy-horns Added
ovinia-ram-horns Added

Resources/Textures/_Triad/Mobs/Customization/Ovinia/snout_markings.rsi

State Old New Status
ovinia-blaze Added
ovinia-face Added
ovinia-nose Added
ovinia-snout Added

Resources/Textures/_Triad/Mobs/Customization/Ovinia/tail_markings.rsi

State Old New Status
ovinia-tail Added
ovinia-tail_wag Added

Resources/Textures/_Triad/Mobs/Species/Ovinia/displacement.rsi

State Old New Status
jumpsuit-female Added
jumpsuit Added
outerclothing-hardsuit Added
shoes Added

Resources/Textures/_Triad/Mobs/Species/Ovinia/parts.rsi

State Old New Status
eyes Added
full Added
head_f Added
head_m Added
l_arm Added
l_foot Added
l_hand Added
l_leg Added
r_arm Added
r_foot Added
r_hand Added
r_leg Added
snout Added
torso_f Added
torso_m Added

Edit: diff updated after 9684668

@TheRealMasterChief117 TheRealMasterChief117 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changelog needs 🆑
Move Textures under _Triad, we don't need more folders with one thing in them

Same with the guidebook entry. The guidebook entry also needs the same formatting as the others, and needs to not reference Nanotrasen

@Shajoisafrog

Copy link
Copy Markdown
Author

Understood. I'll have to try and mirror the others. It'll likely get done tomorrow along with the moving of the textures and updating file paths.

Relocating all Ovinia files to Triad folders and deleting macro folders. Updating associated files to go to _Triad and not _MACRO
@Shajoisafrog

Copy link
Copy Markdown
Author

Still got a bit more to do, please don't auth the next workflow bits yet. Just pushing the big folder changes.

@DDrakov

DDrakov commented Sep 10, 2026

Copy link
Copy Markdown
Collaborator

Still got a bit more to do, please don't auth the next workflow bits yet. Just pushing the big folder changes.

You can draft the PR until it's ready to review

@Shajoisafrog
Shajoisafrog marked this pull request as ready for review September 10, 2026 17:01
@TheRealMasterChief117

Copy link
Copy Markdown
Collaborator

Also gave increased radiation and toxins damage

Test if poisons actually obey these damage modifiers

All toxins from toxins.yml no longer ignore reistances, this allows Ovinia to take increased damage (because ignoreresistances also ignores damage increases) and Goblins will now take 25% less toxin from all these.
@Shajoisafrog

Copy link
Copy Markdown
Author

Per request, tested this out and it turns out 99% of all toxins just ignore resistances to do true damage (Which also means they ignore damage increases for species that take increased toxins damage). Talked with Ricky, added the ignoreresistances: false flag to all toxins in toxins.yml. Goblins now resist all toxins listed there at 25% as was supposed to be intended and ovinia take 15% more toxins damage. Tested with human, goblin, and ovinia.

@github-actions

Copy link
Copy Markdown
Contributor

This pull request has conflicts, please resolve those before we can evaluate the pull request.

@Shajoisafrog

Copy link
Copy Markdown
Author

That was a super weird conflict because I didn't touch that part of the cleanup code at all.

@Shajoisafrog

Copy link
Copy Markdown
Author

Anyway, conflict resolved!

Comment thread Resources/Prototypes/_EE/Entities/Mobs/Customization/Markings/oni_horns.yml Outdated
Comment thread Resources/Prototypes/_Triad/Guidebook/species.yml Outdated
Comment thread Resources/Prototypes/_Triad/ai_factions.yml Outdated
- type: npcFaction # for ovinia's animal friend trait (makes bees, space kangaroos and bears, and angry slimes not including reagents be friendly towards ovinia)
id: AnimalFriend
hostile:
- SimpleHostile No newline at end of file

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For this, you should split this faction up.
Give the animals that should be friendly to Ovinia 'neutral', so that when an ovinia attacks a mob that they're friendly to, it will start attacking, like monkeys

Comment thread Resources/Prototypes/Guidebook/species.yml Outdated
Comment on lines -2 to -25
- type: emote
id: Hiss
category: Vocal
name: chat-emote-name-reptilian-hiss # Triad: was literal `Hiss`
icon: _Impstation/Interface/Emotes/hiss.png # Triad - change icon
available: false
whitelist:
components:
- Vocal
- ReptilianEmotes # Triad
blacklist:
components:
- BorgChassis
chatMessages: ["chat-emote-msg-reptilian-hiss"] # Triad - localization
chatTriggers:
- hiss
- hisses
- hiss.
- hisses.
- hisses!
- hissing
- hissed
- hissing.
- hissed.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why's this being removed?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It was flagged as a duplicate file entry

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let me go in and test this while I'm thinking about it for lizards

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm readding this in to pull the linter error for it again to double check the alternative emote location. IDK why this flagged with my stuff on the linter to begin with, but here we are.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

::error file=/Prototypes/Nyanotrasen/Voice/speech_emotes.yml,line=101,col=3::/Prototypes/Nyanotrasen/Voice/speech_emotes.yml(101,3) Found dupe prototype ID of Hiss for Content.Shared.Chat.Prototypes.EmotePrototype

Comment thread Resources/Prototypes/Reagents/toxins.yml Outdated
Shajoisafrog and others added 6 commits September 11, 2026 11:20
…oni_horns.yml

Co-authored-by: TheRealMasterChief117 <officialtrollfacexxx@gmail.com>
Co-authored-by: TheRealMasterChief117 <officialtrollfacexxx@gmail.com>
Co-authored-by: TheRealMasterChief117 <officialtrollfacexxx@gmail.com>
Co-authored-by: TheRealMasterChief117 <officialtrollfacexxx@gmail.com>
Co-authored-by: TheRealMasterChief117 <officialtrollfacexxx@gmail.com>

@TheRealMasterChief117 TheRealMasterChief117 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Your changelog is pretty unclear

Image

This is the changelog that is seen ingame by all players. You don't need to mention code-side stuff like components and whatnot

Try making your changelog a little more player-friendly, for example:
'Added the Ovinia species, a sheep/goat/cow/deer like species that does X.'
Remember to put the entire message that should be in the changelog past the 'add' or 'tweak' or 'fix' parts. The changelog doesnt add the word Add, it is just for the emoji next to the entry.

@Shajoisafrog

Copy link
Copy Markdown
Author

Changelog updated.

@TheRealMasterChief117

Copy link
Copy Markdown
Collaborator
   Multiple failures or warnings in test:
  1) CLIENT: 5.947s [ERRO] go.comp.sprite: State 'eyeball-l' not found in RSI: '/Textures/_Triad/Mobs/Species/Ovinia/parts.rsi'. Exception: 
     at Robust.UnitTesting.Pool.TestPair`2.ReportErrorLogs() in /home/runner/work/Triad_Sector/Triad_Sector/RobustToolbox/Robust.UnitTesting/Pool/TestPair.Recycle.cs:line 28
   at Robust.UnitTesting.Pool.TestPair`2.OnCleanDispose() in /home/runner/work/Triad_Sector/Triad_Sector/RobustToolbox/Robust.UnitTesting/Pool/TestPair.Recycle.cs:line 99
   at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.ExecutionContextCallback(Object s)

  2) CLIENT: 5.947s [ERRO] go.comp.sprite: State 'eyeball-r' not found in RSI: '/Textures/_Triad/Mobs/Species/Ovinia/parts.rsi'. Exception: 
     at Robust.UnitTesting.Pool.TestPair`2.ReportErrorLogs() in /home/runner/work/Triad_Sector/Triad_Sector/RobustToolbox/Robust.UnitTesting/Pool/TestPair.Recycle.cs:line 28
   at Robust.UnitTesting.Pool.TestPair`2.OnCleanDispose() in /home/runner/work/Triad_Sector/Triad_Sector/RobustToolbox/Robust.UnitTesting/Pool/TestPair.Recycle.cs:line 99
   at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.ExecutionContextCallback(Object s)

  3) CLIENT: 5.947s [ERRO] go.comp.sprite: State 'eyeball-l' not found in RSI: '/Textures/_Triad/Mobs/Species/Ovinia/parts.rsi'. Exception: 
     at Robust.UnitTesting.Pool.TestPair`2.ReportErrorLogs() in /home/runner/work/Triad_Sector/Triad_Sector/RobustToolbox/Robust.UnitTesting/Pool/TestPair.Recycle.cs:line 28
   at Robust.UnitTesting.Pool.TestPair`2.OnCleanDispose() in /home/runner/work/Triad_Sector/Triad_Sector/RobustToolbox/Robust.UnitTesting/Pool/TestPair.Recycle.cs:line 99
   at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.ExecutionContextCallback(Object s)

  4) CLIENT: 5.947s [ERRO] go.comp.sprite: State 'eyeball-r' not found in RSI: '/Textures/_Triad/Mobs/Species/Ovinia/parts.rsi'. Exception: 
     at Robust.UnitTesting.Pool.TestPair`2.ReportErrorLogs() in /home/runner/work/Triad_Sector/Triad_Sector/RobustToolbox/Robust.UnitTesting/Pool/TestPair.Recycle.cs:line 28
   at Robust.UnitTesting.Pool.TestPair`2.OnCleanDispose() in /home/runner/work/Triad_Sector/Triad_Sector/RobustToolbox/Robust.UnitTesting/Pool/TestPair.Recycle.cs:line 99

Adds several missing markings to Ovinia and attempts to fix an error with the ovinia eyes.
@Shajoisafrog

Copy link
Copy Markdown
Author

Alright, so I hope what I did by moving eyes into a layer fixes this problem. Nothing is flagging when I run my server or the linter right now but I wager these tests will probably find something wrong. Guess we'll see! Also added in several generic markings like prosthetics for arms and scars. No legs for the IPC prosthetics as they don't conform to the ovinian style and just kind of vaguely slap normal legs on them.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Audio C# Docs Improvements or additions to documentation/guidebooks FTL Changes to localization files S: Needs Review S: Untriaged size/M Sprites YML

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants