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鈥檒l occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reworks plumbing reaction chamber, purity support #57071

Merged
merged 8 commits into from Mar 2, 2021

Conversation

Time-Green
Copy link
Contributor

@Time-Green Time-Green commented Feb 20, 2021

About The Pull Request

Currently does four things:

The reaction chamber now supports purity! It has a yellow (acid) and green (basic) input for buffers, aswell as a setting to automatically dispense either an acidic or alkalic buffer when above/below a certain pH! Now you can make a 100% pure meth factory! The buffer connects are on an alternate layer.
image
(UI image pending...)

Probably going to be less loved, but I removed the reaction chambers ability to pick reagents from the net. Instead, it will pull untill a set volume is reached. Then it'll start reacting. While this means that players will have to be more creative and use a wider array of machinery.

Also new machine! Buffers! They fill the hole that reagent chambers left. They can be set with a threshold volume and will only start putting out chems when ALL of their neighbouring buffers also are also above this threshold. You might have a lot of one chem and have to wait for a more specialized chem to be produced, and with the cleverness of reaction chambers gone, bufferers can do just that: wait.
image

I also removed all but two layers. I want to make it obvious what layer the buffer connects are on. Also layers are basically unusable and I'm gonna give them a rework very soon. I'll put the things back in then when they actually have something to contribute

Why It's Good For The Game

FermiChem integration good! I want to do a lot more, but this is the worst of it for me.

Also, about the removal of the reaction chambers ability to cherrypick:
This has been an issue since the start, but due to how easy it is to use the reaction chambers, there's no point in making more complicated setups, and instead promotes just making synthesizers with every possible reagent and then just being done. It's an inevitable change, and now is the perfect time by shifting the reaction chamber towards being a purity tool.

Changelog

馃啈 Time-Green
add: Plumbing reaction chambers now have connects for acidic (yellow) and basic (green) buffers! You can set the UI to indicate at what pH the reaction chamber is supposed to insert a buffer into the reaction.
add: Adds plumbing bufferers. Place a bunch of them next to each other, set a threshold amount with right click and screwdriver them. Once all are above the threshold, only then will they start providing chems. Great for waiting steps and carefully dosing amounts!
balance: The reaction chamber no longer pulls specific chems, and instead has a set volume it works towards before being able to react.
/:cl:

  • Adds a mechanic that "waits", so one can wait for all the reactants to be present
  • Add ability to make reaction chambers buffer pipes work on a custom layer (it's literally just a var change, but I players can't change vars)
  • find the fuck out whats wrong with the linters

@tgstation-server tgstation-server added Balance Changes to functionality that modifies how effective certain methods are at powergaming Feature Exposes new bugs in interesting ways Sprites A bikeshed full of soulless bikes. UI We make the game less playable, but with round edges labels Feb 20, 2021
Copy link
Member

@stylemistake stylemistake left a comment

Choose a reason for hiding this comment

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

If linter doesn't complain, i'm fine with this.

UPD: Linter does complain.

@Time-Green
Copy link
Contributor Author

If linter doesn't complain, i'm fine with this.

UPD: Linter does complain.

Gonna take me a few months to understand tgui well enough to know what the linters mean, but I'll get there eventually

@MLGTASTICa
Copy link
Contributor

If you remove the ability for the reaction chambers to cherry pick could you also add piping layers ? I do like the idea of chemistry factories being more complex but this kinda makes it impossible since it will take so much more space

@Time-Green
Copy link
Contributor Author

If you remove the ability for the reaction chambers to cherry pick could you also add piping layers ? I do like the idea of chemistry factories being more complex but this kinda makes it impossible since it will take so much more space

They already exist, it鈥檚 just that no one ever uses them. Multi-layer ducts are a bit jank, and I鈥檒l look into improving them in the future

@optimumtact
Copy link
Member

Minichems day grows near

@Time-Green
Copy link
Contributor Author

Minichems day grows near

It's been growing near for a very long time

@maxymax13
Copy link
Contributor

now make showers and sinks use water pipes instead of producing water with raw willpower and add a plumber job so i can rp as mario while ignoring every single person asking me to actually fix a pipe

@stylemistake stylemistake marked this pull request as draft February 20, 2021 22:45
@stylemistake stylemistake changed the title [WIP] Reworks plumbing reaction chamber, purity support Reworks plumbing reaction chamber, purity support Feb 20, 2021
@Tlaltecuhtli
Copy link
Contributor

can yo make buffer ports on a different layer?

@Maurukas
Copy link
Member

Maurukas commented Feb 22, 2021

Pardon my wall of text. I do a lot of plumbing.

I removed the reaction chambers ability to pick reagents from the net. Instead, it will pull untill a set volume is reached. Then it'll start reacting.

Currently building virtually any worthwhile or scaled up chemical factory requires this behavior to fit it into the available space. This is one of the core mechanics of plumbing that people need to 'get' before they are able to use it to its full potential. Without being able to select the inputs, the utility of plumbing is drastically reduced and the space required to do complicated things increases substantially. Reactions that need to recycle a portion of their outputs, such as blood, or any reaction with a catalyst may not be practical or possible at all.

Input selection is also needed for automating mixture outputs - either at the pill press, or for chemical bottlers. For example, a chemical bottler that fills gels with 30 Salicylic/30 Libital, or an IV bag of blood, Sal-Glu and iron. Or a grenade. One of plumbing's big advantages is that you can automate mixtures which would be infuriatingly click intensive to make a single pill of in the ChemMaster. Even if you do not want this functionality on the reaction chamber, please consider that some filtering method is needed for producing end products.

They already exist, it鈥檚 just that no one ever uses them. Multi-layer ducts are a bit jank, and I鈥檒l look into improving them in the future

Jank only begins to describe it. It's unintuitively on the plunger, rather than the plumbing devices themselves, and it wasn't on the wiki for a long time. I also do not believe you can have different layers for input/output on the same device. Multilayer plumbing adapters are also currently one of the most hideous things in the game, spawning a absolutely massive sprite that cannot be picked up, and must be dragged around like it's a locker.

Adding two additional input ports is a double whammy on space requirements with the other changes. Plumbing is a major sink for map real estate and most maps don't have any more to give. What I'd like to see is arbitrary side/layer selection via the ui for each input/output on each plumbing device. I realize that's a big ask in terms of tgui.

Minichems day grows near

If only today were that day.

@Time-Green
Copy link
Contributor Author

Time-Green commented Feb 22, 2021

snip

I really appreciate your feedback! I should probably just make a forum thread where people can give me feedback

If you want to filter end products, filters exist, I was actually able to effectively make cryoxadone when the reagent chamber broke using them, although it was extremely clunky. Filters can also be used to feed reagents back into the mix. I created a meta where they were never really useful since, so hopefully they'll be worth a bit more.

All behaviour of the reagent chamber can now be replicated with filters, splitters, buffers and to a lesser extent even disposers.

You're very right on the layer part, user interfaces aren't my fort茅 and since I never heard people complain about it I never bothered to put the time into really fixing it. Because it's bad, so fucking bad. I'll try to have a PR up delegating layer selection to the plumbing RCD. I'm just gonna gut the layer manifold because it doesn't deserve to exist. Instead I'll just reuse the cross-color connecting, because it's very easy, obvious and builds on known behaviour.

About making inputs and outputs work on different layers... Plumbing supports having multiple components on the same object, which is what I did with the reaction chambers buffer pipes. There's basically three 'plumbing' on the reaction chamber, normal, acid and basic. The other machinery doesn't have this and can't have different layers. I can't make every input and output seperate because it'd just set me up for a rework later down the road. I can't promise when, but I'll look into finding some way to carry both direction and layer info on an input/output.

Also fancy UI's are just right out, I'm royally unskilled in making user interfaces. I'll just track which duct you click and change that.

@Time-Green Time-Green marked this pull request as ready for review February 22, 2021 20:15
@Maurukas
Copy link
Member

Thank you for listening. Being able to manage fermi-chem inside of plumbing is something I would like a great deal.

I should clarify when I say filtering for products. I'm referring to ratios here. If I want a pill that contains 5u libital and 15u granalbitulari, I can do that now. I can do it with with an arbitrary amount of chems to an arbitrary quantity on each chem. It's very easy to combine useful chems together taking into account their different OD and side effect thresholds.

I've runthis PR locally and was able to figure out how to use the automatic buffer (these are super cool by the way) to control a 1:1 ratio in the output. Despite quite a bit of experimentation using splitters, autobuffers and filters I was never able to manage to get an output of even 1:2 in the pill press. The chems either flowed into the pill press at 1:1 ratios, or I would see one chem flow in, fill the press, then the next chem would flow in resulting in a random ratio/single drug pills. Is there a way to do this now?

There also do not appear to be Y-flipped chemical splitters, like there are for atmos mixers/filters. This is the only plumbing component that is chiral and would need one.

@optimumtact
Copy link
Member

I am okay with making chems require more space, as ultimately this will feed into minichem anyway.

Plus the extra complexities won't hurt you that much

@Time-Green
Copy link
Contributor Author

@Maurukas Hmm, I might have to mess around a bit with plumbing calculations to get that working then, because not being able to make custom ratios is bad.

@Time-Green
Copy link
Contributor Author

I've added a proper layer manifold, but I'm gonna wait for this to get merged first. I haven't done anything to account for ratios being clumsy yet, I'll look into it soon. I don't mind it being merged before that, I'll just stick it in another PR because this is getting quite bloated as is

@Fmk89
Copy link

Fmk89 commented Mar 3, 2021

If we had infinite space and time to do chem loops those changes that would be ok. But since as players we are constrained by time and space requirements, this change just made plumbing down right useless.

@optimumtact
Copy link
Member

just be patient, you'll understand once minichem arrives

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Balance Changes to functionality that modifies how effective certain methods are at powergaming Feature Exposes new bugs in interesting ways Sprites A bikeshed full of soulless bikes. UI We make the game less playable, but with round edges
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

10 participants