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
Reworks plumbing reaction chamber, purity support #57071
Conversation
Also reworks some plumbinjg code
There was a problem hiding this 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.
Gonna take me a few months to understand tgui well enough to know what the linters mean, but I'll get there eventually |
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 |
Minichems day grows near |
It's been growing near for a very long time |
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 |
can yo make buffer ports on a different layer? |
Pardon my wall of text. I do a lot of plumbing.
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.
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.
If only today were that day. |
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. |
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. |
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 |
@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. |
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 |
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. |
just be patient, you'll understand once minichem arrives |
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.
(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.
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: