Fuel and liquid oxy tanks are not smart about inputs and eat resources


ThePiachu
  • Branch: Live Branch Version: Windows Pending

I wanted to build a small refuelling landing pad on a planet. I wanted to save on my precious insulation so I wanted to run one line for both liquid oxygen and petroleum. As it turns out though, liquid fuel tanks and liquid oxidiser tanks aren't too smart.

Liquid Oxidiser Tanks just straight up eats my Petroleum. It goes in and gets deleted. I was expecting it to pass through, but no.

Liquid Fuel Tanks on the other hand take Liquid Oxygen, but they can't do anything with it - I don't get any range from it. I was expecting for the tank to ignore the oxygen.

I think this is how things should act:

- Liquid Oxidiser Tank should only accept Liquid Oxygen and ignore anything else on the line, letting it pass over it without being consumed.

- Liquid Fuel Tank should only accept Petroleum and Hydrogen (or whatever else might be added in the future as liquid fuel) and ignore anything else on the line, letting it pass over it without being stored.

Test - fuel oxy.sav


Steps to Reproduce

- Pump liquid oxygen and petroleum in the same pipe

- Connect that pipe over liquid oxydiser and liquid fuel tanks

- As soon as the wrong element will come in contact with the inputs wrong things will start happening.

  • Like 1


User Feedback


So this is basically normal behavior.

Whenever liquid flows into a liquid input, it tries to go into it unless the building is full/disabled, once inside the building if it's not a type the building can handle, in most cases it leaks out damaging the building, although in the case of the Water Sieve being fed Water, Salt Water or Brine, or the Desalinator being fed Water or Polluted Water, the un-processable water types are passed through to the output instead of causing damage. But buildings never close their inlet to liquid types they can't handle.

Rocket tanks behave normally in that they'll attempt to consume any liquids that enter the liquid input, but unusual in that they don't follow the usual "take damage and leak" mechanism: any liquid that can't be consumed by the engine is just deleted from existence.

In short, liquid inputs are never selective about what kind of liquid they accept.

So it would be very surprising if this would be considered a bug: it's more of a feature request really. And it'd be a feature which is quite disruptive to the design of the pipe systems, since filters and pipe element sensors basically exist to allow the player to ensure the right kind of liquids end up at liquid inputs.

Share this comment


Link to comment
Share on other sites
On 4/5/2022 at 4:50 AM, blakemw said:

In short, liquid inputs are never selective about what kind of liquid they accept.

From what I am seeing in this code, that is untrue.  Specifically, there is a class that can handle consuming from a pipe into a storage named ConduitConsumer.  The CO2 Engine and Steam Engine use this to filter the gas consumed.  It is set to 'dump' incorrect gas.  Try yourself by piping oxygen into a CO2 engine.  Note the oxygen escaping the port.  The Large Fuel Tanks have one but its set to store incorrect elements. IE it consumes all liquids anyways.  I can only assume this is because the Large Fuel Tanks must support both petroleum and liquid hydrogen where the ConduitConsumer can only filter a single element.  The Small Petroleum Engine doesn't have one as to why I cant say.

I have been able to block incorrect liquids from filling the tanks but incorrect liquid is simply dumped not even passing through.  Its not really a solution as blocking the pipe would be much more preferred. I have only figured this out preliminary while making a mod for these exact issues.  I mean when a fuel tank accepts anything even elements like water I'd say there is room for improvement.  Either the ConduiitConsumer class needs more options or perhaps the FuelTank class itself.  I'll see what I can do.

Edited by ONIZone
  • Like 1

Share this comment


Link to comment
Share on other sites

I've created some mods relating to rockets.  None are posted yet, but if you're interested I can give you the one that fixes the fuel and liquid oxidizer tank consumption issues.  It creates a new way to handle unuseable liquids and gasses. Instead of the defaults: Destroy, Dump, or Store (The results of which are to dump the piped element into the environment and if applicable damage the the building consuming it,  or to simple consume/store the element which in the case of rockets means you cant use that storage space permanently unless you rebuild the rocket storage module in question.) it just passes the element without damage to the rocket storage module or taking in an improper element.

I've applied the workaround to CO2 Engines, Steam Engines, Small Petroleum Engines, Large Liquid Fuel Tanks, and Liquid Oxidizer Tanks.

Edited by ONIZone

Share this comment


Link to comment
Share on other sites


Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now