Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Semi-Experimental] The coldbloodening #2684

Merged
merged 10 commits into from
Sep 13, 2024

Conversation

DeltaFire15
Copy link
Contributor

@DeltaFire15 DeltaFire15 commented Jun 15, 2024

About The Pull Request

Lizards in our lore are coldblooded. Those in our game are not, and have some fairly noninteractive traits (digitigrade is optional, so the only noteworthy drawback is cold damage mod which rarely comes up).

This replaces their basic "cold mod" modifier with the coldblooded property.
What being cold-blooded does is that it negates automatic body temperature stabilization, which means temperature adjustment is done purely by environmental factors.
This means that having ones body at non-standard temperatures becomes more of an active consideration, as an area with desired temperatures becomes the main way of temperature adjustment (besides varied methods such as chemicals, nanites, xenobio shenanegans, etc).
They do still preserve their resilience to direct heat-based damage.

In some talks regarding the matter, it was mentioned some other servers having heat sharing done via hugging (help intent), however while I liked that concept, I did not like it being on a trivial & spammable action (that would also need spamming).
Instead, this adds new functionality to "aggressive" grabs, which makes them share temperature between grabber and grabee while maintained. This is affected by insulation of both targets, albeit weighted somewhat towards transmissibility, unless either target has total insulation in which case it does not occur.
This in my opinion is a more fun and interactive take on the previously mentioned hug temperature sharing, and aggressive grabs fit that closeness more accurately in my opinion.

Feel free to suggest interesting things regarding this change. This does not have to be its final form.

Revision 1

Added thermogenesis to ectotherms. Essentially, some cold-blooded creatures in nature can somewhat counteract the cold by repeatedly contracting & relaxing (basically vibrating) their muscles, as the energy usage in muscles releases some heat.

This adds an equivalent of this to lizards. If they remain at temperatures significantly below normal (<~15°C currently) for an amount of time, they will subconsciously increase muscle activity in an attempt to heat up (aka shiver), even more so if very cold. This is inefficient, requires nutrition if active, can be a bit slow to respond, and doesn't feel good (mood debuff).

Revision 1.5

PR now also contains some random kneecapping of cult level mood buffs from simple drink sources within the NSV modular mood events. Who knew all moths were blood cultists?

Lizards now have a "comfy" bodytemperature range of ~30-60°C, in which they gain a mood buff as opposed to the debuff for being cold. Fairly difficult to maintain since they lack any kind of natural stabilization and the ship is 20°C unless you HE pipe or cook the department.

Also fixes a long-standing bug with heat protection calculations that would allow you to bleed or gain negligible amounts of heat with full protection due to decimal accuracy and the protection value being split into 11 small values being added together.
Usually body temperature stabilization would be bigger than the values added by this, but guess who doesn't do that!

Why It's Good For The Game

Species uniqueness is fun.

Testing Photographs and Procedure

Revision 1

Some demonstrations added.

Avoid these if using mobile data (video files do be big)

Thermogenesis demo (semi-outdated - messages related to it got changed, but functionality is the same)
ectotherm_thermogenesis_test.mp4
Grab temperature exchange demo
aggressive_temp_exchange_test.mp4

Changelog

🆑
balance: Lizards are now coldblooded (they have no natural bodytemperature stabilization besides the environment).
balance: Coldblooded creatures also have an inefficient form of thermogenesis they can use to heat up.
balance: Lizards dislike the cold (<15°C / when you start shivering) and like warmth (30°C-60°C), which can affect mood.
balance: Lizards no longer have a 1.5 cold damage modifier.
balance: Having somebody in an aggressive grab will share temperature between the grabber and grabbed target over time (respecting insulation).
balance: Drinking blood as a moth now has a weaker mood buff.
balance: Naval coffee now has a weaker mood buff.
fix: Temperature protection values returned by the getter are no longer very very slightly off the value they should be. Thanks decimal precision.
/:cl:

can we talk about how my tangential code is more complex to implement than the main goal?
@Lauwma
Copy link

Lauwma commented Jun 16, 2024

Shouldn't that be a upstream change ?

@DeltaFire15
Copy link
Contributor Author

Shouldn't that be a upstream change ?

I am not interested in maintaining this change upstream on a server I am not knowledgeable about regarding its balancing & design-style.

Thermogenesis for ectotherms.

Also moves some things around, modularizes others and mildly improves one thing.
also mood -2 and quip about another one
Copy link
Contributor

@Bokkiewokkie Bokkiewokkie left a comment

Choose a reason for hiding this comment

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

Code itself looks good! And the shivers are a good solution to make coldbloodedness less devastating in space. Just a few notes

nsv13/code/datums/mood_events/nsv_events.dm Outdated Show resolved Hide resolved
nsv13/code/datums/mood_events/nsv_events.dm Outdated Show resolved Hide resolved
This sort of behavior is quite literally called shivering thermogenesis so yeah this is more appropriate wording.

Also rewrites the moodlet to be more fitting.
man, the split on mood buffs is so surreal.
@DeltaFire15 DeltaFire15 requested a review from Bokkiewokkie June 28, 2024 06:45
halves nutrition usage since this is still 2x and 5x base nutrition use (respectively).

 replaces abs uses on things that are always negative with a - operator instead.

one safety adjustment to temp exchange if someone makes it possible to go above 1 temp protection (for whichever reason).
the value that gets removed can't be bigger than 1, because I already ensure the components are smaller than 1. My brain must've been rebooting.
lizards get a mood buff at a certain temp range (30-60°C), which is the other side of the spectrum (their mood debuff from being cold).

Also adjusts the mood event values I changed earlier to the ones bokkie suggested 4 -> 3.

Also bandaids an ANCIENT issue with temp protection where you could get wrong values because of decimal precision. Very cool and epic.
Bokkiewokkie
Bokkiewokkie previously approved these changes Jun 28, 2024
Copy link
Contributor

@Bokkiewokkie Bokkiewokkie left a comment

Choose a reason for hiding this comment

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

Adding "ate without table" moodlet after this

I'm rounding protection too aggressively (10%), 0.1% should be much more granular while also not yet running into precision issues.
@Bokkiewokkie Bokkiewokkie merged commit 5f1c555 into BeeStation:master Sep 13, 2024
9 checks passed
@DeltaFire15 DeltaFire15 deleted the cold-blood branch September 13, 2024 18:53
IndusRobot pushed a commit to IndusRobot/NSV13 that referenced this pull request Dec 16, 2024
IndusRobot pushed a commit to IndusRobot/NSV13 that referenced this pull request Dec 16, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants