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

Cryogenics Overhaul #1443

Merged
merged 16 commits into from
Jun 14, 2024
Merged

Conversation

neuPanda
Copy link
Contributor

@neuPanda neuPanda commented May 30, 2024

adding cryo chems to work after death
balancing cryo chem formulas based on objectives
balancing cryo chems healing based on formulas
making cryo pods more efficient
modifying how the body metabolize chemical mixes
adding a way to split solution reagents evenly
renaming Tramoxadone to Traumoxadone

About the PR

added new cryo chem stelloxadone

modified dexo cryo chem to be a more complex solution to fall in line with other cryo chems but also improving its capabilities

modified cryox to not be an omni heal and negate the point of cryo chems but added blood restoration and significantly improved its asphyxiation healing

modified alox cryo chem to heal cold damage in addition to other burn damages so that omnizine was no longer the only way to heal dead cold damage

all cryo chems now work on the dead

tramoxadone is now traumoxadone

cryo pod is more efficient at administering chemicals

the body can now metabolize multiple meds at once, still preventing from poison power gaming (consider adding more medical mixes that result in dangerous chemicals like razorium to prevent medical power gaming)

Why / Balance

this is in my effort to help improve medical over all and making cryo a more impactful way of healing to make it actually used in game rather than being a joke concept.

How to test

  • created a cryo setup
  • smashed urist with throngler
  • ensure that a beaker with stellox, traumox, alox, and dex-ox, and cryox, would all be injected into the body at .25 units each note that this should also be the same even if the units in solution are not balanced
  • observe that the body has .5 of each injected into the body and they they are all being metabolized as none are poisons
  • change solution to test each chem individually to ensure they heal as expected note that stell heals both poison and radiation.
  • tested that cryo heals blood loss but not other damages and after death
  • tested that dex-ox heals genetic more effectively and after death
  • tested that alox heals cold
  • tested that all of traumox's tests are accurate
  • tossed 5 different chems into a beaker
  • tested only 3 chems would process at a time randomly chosen
  • repeated this test with medicals and narcotics also mixed with the poisons and ensured that everything was injected except poisons, max 3 poisons were injected into the body

Media

  • I have added screenshots/videos to this PR showcasing its changes in game, or this PR does not require an in game showcase

Breaking changes

Changelog

🆑

  • add: new cryo chems
  • tweek: cryo chems to work after death
  • tweek cryo tube more efficient

adding cryo chems to work after death
balancing cryo chem formulas based on objectives
balancing cryo chems healing based on formulas
making cryo pods more efficient
modifying how the body metabolise chemical mixes
adding a way to split solution reagents evenly
renaming Tramoxadone to Traumoxadone
Copy link
Contributor

@whatston3 whatston3 left a comment

Choose a reason for hiding this comment

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

Finished code review. A good few suggestions, most nitpicky (sorry). Looks interesting! Testing changes locally.

Content.Server/Body/Systems/MetabolizerSystem.cs Outdated Show resolved Hide resolved
Comment on lines 120 to 121
// for every .25 units used, .5 units per second are added to the body, making cryo-pod more efficient than injections
solutionToInject.ScaleSolution(cryoPod.PotencyAmount);
Copy link
Contributor

Choose a reason for hiding this comment

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

Interesting idea, would recommend noting this down in the guidebook.

Copy link
Contributor

Choose a reason for hiding this comment

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

Another note - should this potency be applied to meds other than cryo-specific ones? I'd argue no - if it was, I can't see a reason to skip using cryo pods on a hospital ship, even if only to save on meds.

Base-tier meds are easy to make - Urist McSnakebite shows up, stick 'em on a bed, feed 'em some bicaridine and dylovene, sleep it off. Cryo meds require machinery to use and a fiddlier process to make, for the benefit of far more efficient healing for extreme cases.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

the reason cryo would be more efficient at everything is it would be able to apply the right amount to the exact locations needed. not that it heals faster, just more efficiently
this would be a benefit to doctors especially as we start removing easy access to chems

I however do not want to prevent anybody from being able to heal, back ally healing by shady doctors using shady practices is totally a thing. not as efficient, but it gets the job done in a pinch

Content.Shared/Chemistry/Components/Solution.cs Outdated Show resolved Hide resolved
Content.Shared/Medical/Cryogenics/CryoPodComponent.cs Outdated Show resolved Hide resolved
Content.Server/Body/Systems/MetabolizerSystem.cs Outdated Show resolved Hide resolved
Content.Server/Body/Components/MetabolizerComponent.cs Outdated Show resolved Hide resolved
Content.Server/Body/Systems/MetabolizerSystem.cs Outdated Show resolved Hide resolved
Resources/Locale/en-US/reagents/meta/medicine.ftl Outdated Show resolved Hide resolved
Content.Server/Body/Components/MetabolizerComponent.cs Outdated Show resolved Hide resolved
Copy link
Contributor

@whatston3 whatston3 left a comment

Choose a reason for hiding this comment

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

Testing worked alright - stelloxadone is fun to use, gives more use for doxarubixadone, and cryoxadone works on the dead. All good there.

I was able to create a disgusting slurry of 10+ food ingredients and they all seemed to metabolize at once, I don't quite see what you're trying to do here, though. Toxins are limited, as written - that works well.

I think necrosol could use a buff as-is, it doesn't seem worth the resources unless you have access to omnizine-producing plants. Think a reduction to the metabolism rate for that chem might be useful.

Comment on lines 120 to 121
// for every .25 units used, .5 units per second are added to the body, making cryo-pod more efficient than injections
solutionToInject.ScaleSolution(cryoPod.PotencyAmount);
Copy link
Contributor

Choose a reason for hiding this comment

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

Another note - should this potency be applied to meds other than cryo-specific ones? I'd argue no - if it was, I can't see a reason to skip using cryo pods on a hospital ship, even if only to save on meds.

Base-tier meds are easy to make - Urist McSnakebite shows up, stick 'em on a bed, feed 'em some bicaridine and dylovene, sleep it off. Cryo meds require machinery to use and a fiddlier process to make, for the benefit of far more efficient healing for extreme cases.

Copy link
Contributor

@whatston3 whatston3 left a comment

Choose a reason for hiding this comment

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

Tested the most recent changes locally. Works as before, cryoxadone changes show up in the guidebook chemical entry. Good stuff. I've got a suggested Cryogenics guidebook entry up, feel free to use or change it as you'd like.

I don't like that cryo pods completely avoid overdose with this set of changes (except with Pyrazine), and I think they'll need a nerf, but this seems to behave as you wanted it to. I'll approve the changes, but I think some rework or balance is needed. Guess we'll see how cloning fits in with new med?

@neuPanda
Copy link
Contributor Author

neuPanda commented Jun 1, 2024

I don't like that cryo pods completely avoid overdose with this set of changes (except with Pyrazine),

this is part of the reason i added side effects to medications this way its a balancing act and needing to measure out what your going to need as to not cause damage while not providing any healing. ie if you have 0 tox you will still take the brute an genetic from stelloxadone. I believe more chems need negatives to make them feel more realistic or like in the case of the brute chems have dangerous mixtures if combine with each other. but without some feedback from people playing and indicating how things feel its hard to balance

Another note - should this potency be applied to meds other than cryo-specific ones? I'd argue no - if it was, I can't see a reason to skip using cryo pods on a hospital ship, even if only to save on meds.

part of this is a limitation of the code i would have to go in and create a system that can be used to group different med types and if not done right that can get really messy really fast.
another part being that cryopods are advance machines that have the ability to get the meds where they are needed with less wasted material seeping into parts of the body not needing the treatment

in the future something i think would be neat would be to be able to have the cryo pod be comprised of multiple components rather than glass and wire. then as components are upgraded you can increase the potency(manipulator?), how many chems it can inject at a time (matter bin?), so base,
2 chems, at a 1.15 multiplier,
3 chems at a 1.40 multiplier,
4 chems at a 1.9 multiplier,
5 chems at a 2.5 multiplier

dvir001
dvir001 previously requested changes Jun 1, 2024
Copy link
Contributor

@dvir001 dvir001 left a comment

Choose a reason for hiding this comment

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

You also didn't add a note // Frontier to any of the added lines making it hard to track down on upstream updates and in yml and c#

@dvir001
Copy link
Contributor

dvir001 commented Jun 1, 2024

Your Changelog are not how the Changelog used, this will not showup in game at all but just bug out.

@neuPanda
Copy link
Contributor Author

neuPanda commented Jun 2, 2024

Your Changelog are not how the Changelog used, this will not showup in game at all but just bug out.

please utilize the constructive part of criticism
do not tell people "this is wrong" tell them "this is wrong, here is how to improve it"

what is it i need to change on my change log because all you have provided is that it is wrong, now how to improve it

@dvir001
Copy link
Contributor

dvir001 commented Jun 2, 2024

Your Changelog are not how the Changelog used, this will not showup in game at all but just bug out.

please utilize the constructive part of criticism do not tell people "this is wrong" tell them "this is wrong, here is how to improve it"

what is it i need to change on my change log because all you have provided is that it is wrong, now how to improve it

**Changelog**
<!--
Make players aware of new features and changes that could affect how they play the game by adding a Changelog entry. Please read the Changelog guidelines located at: https://docs.spacestation14.io/en/getting-started/pr-guideline#changelog
-->

<!--
Make sure to take this Changelog template out of the comment block in order for it to show up.
:cl:
- add: Added fun!
- remove: Removed fun!
- tweak: Changed fun!
- fix: Fixed fun!
-->

Use the format to make it show in game, try to keep it into 3 changelog lines top as to not fill the changelog too much

@neuPanda
Copy link
Contributor Author

neuPanda commented Jun 2, 2024

<!--
Make sure to take this Changelog template out of the comment block in order for it to show up.
:cl:
- add: Added fun!
- remove: Removed fun!
- tweak: Changed fun!
- fix: Fixed fun!
-->

Use the format to make it show in game, try to keep it into 3 changelog lines top as to not fill the changelog too much

ah, thank you. that has been updated to keep it short and sweet. i will double check that i didn't miss that step in my other one. thank you for the clarification on what i had missed.

@neuPanda neuPanda requested a review from dvir001 June 3, 2024 21:08
@github-actions github-actions bot added the Status: Needs Review This PR is awaiting reviews label Jun 3, 2024
@whatston3
Copy link
Contributor

whatston3 commented Jun 13, 2024

I've given this branch another look - I believe I have a suggestions branch that I'm happy with in terms of code.

The branch itself is at whatston3:2024-06-12-CryogenicsOverhaul-suggestions. This has a merge with the current head of master, a commit with all of the cleanup for this PR, and a series of guidebook changes and cleanup.

This suggestion branch:

  • Removes maxPoisonsApplied - species that metabolize more things should have different effects compared to each other. Now it is a negative rather than having pros and cons, but there should still be differences between a slime and a dwarf. Since none of the species had a definition for maxPoisonsApplied, this would've led to the same default behaviour across all species.
  • Adds more descriptive Frontier/End Frontier sections to the comments, in a more consistent style with the rest of the codebase.
  • Simplifies the SplitSolutionReagentsEvenly function, making it similar to the other SplitSolution functions around it.
  • Alters the localized descriptions of cryogenic medications where appropriate. The writeups might need some work, but it's more accurate than before.

This is my best attempt at getting this revised without changing behaviour.

That said, behaviourally, I still think that cryo pods are insanely buffed in this change - it is now impossible to overdose with any medication in the cryo pod (save Pyrazine, or with Arachnids?), and trivializes healing live patients. You can create a cocktail of all of the basic drugs, put that into a keg, pour out a beaker with it as needed, and only use that to heal anyone (edit: who's alive) that comes in without a thought.

I like the new drugs! I like the idea of buffing cryo pods! This is a good feature, I want this in. However, the way drugs are filtered is odd and avoids most of the downsides of metabolism as-is. If you fix that, I'm happy. More than willing to hash this out, just let me know.

@whatston3 whatston3 self-requested a review June 13, 2024 11:28
@Cheackraze
Copy link
Member

conceptually I love all the things happening here, just waiting for the code to be ready steady. personally, medical and chemistry are the areas of the game I have spent the least amount of time doing, since I find the current systems to be so flat and one dimensional, but I hope this is a good step in the right direction before we get any kind of new med

Changes copied from https://github.com/whatston3 recomendations,

many corrections to my poor spelling, as well as cleaning up description and comments i had missed as well as improving upon the medical cryogentics page in the book
@github-actions github-actions bot added the Docs Improvements or additions to documentation label Jun 14, 2024
@Cheackraze Cheackraze merged commit 2d0dcac into new-frontiers-14:master Jun 14, 2024
11 checks passed
FrontierATC added a commit that referenced this pull request Jun 14, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C# Docs Improvements or additions to documentation FTL Status: Needs Review This PR is awaiting reviews YML
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants