Mixed quality crafting
Posted: Mon Jul 06, 2026 4:53 pm
TL;DR
Add a new "AnyWhat?
Currently, crafting machines can only select a single quality level, and subsequently store and consume ingredients of only that quality.I propose adding a new "Any
The output quality level would then be dictated by a different formula, which penalizes the use of mixed inputs.
The implementation of this would be different from the "Any" quality setting that previously existed, as now the ingredients may also be mixed on a per-item basis, rather than per-stack. For example; an iron gear could be crafted from a combination of uncommon and rare iron plates.
Why?
Quality is currently very difficult to integrate throughout a factory.The moment you introduce quality into a production step, every step afterwards will need a separate production line for every single quality you've unlocked.
As a result, the complexity (and effort needed to build it) explodes to the point where quality does not seem worth interacting with outside of end products, Fulgora and legendary malls for megabases.
By permitting the mixing of ingredient quality levels, quality can be naively introduced at any point without needing to explicitly handle the varying quality levels of the output.
However, I do believe this should come with penalties, as that would introduce a healthy trade between mixed and non-mixed setups.
Implementation Details
There's a lot of finer details, both technical and game design wise, that I've deliberately left out above.I've tried to fill in these detail below, aiming to maintain parity with existing mechanics as closely as possible.
Mixed Quality Formula
A new formula needs to be introduced to determine the quality of the final product.This is done by computing an average quality value of the ingredients, then using that value to roll the quality value of the craft. After that, the quality roll introduced by quality bonuses will occur as normal, with the additional upgrade chance only occurring if this latter quality roll succeeds.
For example:
To produce 1 iron gear, 1 uncommon iron plate and 1 rare iron plate is used. The machine has +5% quality from modules.
The average quality value is (1.0(uncommon) + 2.0(rare)) / 2 = 1.5. This would result in a 50/50 chance to produce an uncommon or rare gear.
After it has been chosen whether an uncommon or rare gear is being crafted, the 5% quality chance gets rolled, subsequently upgrading the gear to higher quality and rolling for the additional upgrade chance if so.
The above formula mimics the existing behavior as close as possible, but still needs a penalty added to it.
This penalty would scale off the difference between the lowest quality input and the average quality value. In the example above, this would be 0.5. This value would then be multiplied by a constant (i.e. 0.4) and substracted from the quality value of the craft. 1.5-(0.5*0.4)=1.3 This would result in a 70% chance to perform an uncommon craft, and a 30% chance to perform a rare craft.
This penalty works in such a way that a non-mixed input has zero penalty, whilst mixed input gets penalized harder the lower quality the lowest quality ingredient is.
If the crafting machine has a productivity bonus, then as the productivity bar fills up the machine will also internally accumulate an average quality value. Once the bar is filled up, this value would be equivalent to the average quality value that the productivity craft has seen. The value accumulated should already have the penalty already applied to it, removing that complexity from when the productivity craft completes.
Ingredient Weights
Recipes in Factorio are not designed in such a way that a naive average value would suffice. Some recipes, such as the blue circuit, would end up being cheaply producible in higher quality due to large amounts of low cost and complexity ingredients. The solution here is to define a weight per ingredient on recipes.Whilst it would be ideal to manually define these weights, there are simply too many recipes and ingredients to do this reasonably by hand.
Fortunately it is not too hard to generate values as a starting point. A simple method would be to first manually assign a weight value to raw components (stone, coal, iron ore, water, oil, etc.), and then computing weight values of items derived from them by adding the weights of all ingredients together, divided by the amount of inputs, multiplied by a recipe multiplier constant.
This way, the more ingredients and the more complex a craft, the greater the weight. Those who have played Satisfactory may recognize this formula being similar to the amount of points the AWESOME Sink provides for items.
Example using a starting weight of 1.0 for iron ore, copper ore and coal, 0.25 for oil and a recipe multiplier constant of 1.5:
- 1 iron ore 1.0 -> 1 iron plate 1.5
- 1 copper ore 1.0 -> 1 copper plate 1.5 -> 2 copper cables, 1.5/2*1.5 = 1.125 each
- 3 copper cables, 1.125 each + 1 iron plate 1.5 = green circuit (3*1.125 + 1*1.5)*1.5 = 7.3125
- 100 crude oil, 0.25 each -> 45 petroleum, 100*0.25/45*1.5 = ~0.833 each
- 1 coal 1.0 + 20 petroleum, ~0.833 each = 2 plastic, (1*1.0 + 20*0.833)/2*1.5 = ~13.25 each
- 4 copper cables, 1.125 each + 2 green circuits, 7.3125 each + 2 plastic, ~13.25 each) = red circuit (4*1.125 + 2*7.3125 + 2*13.25)*1.5 = ~68.43
- Total weight: 2*68.43 + 20*7.3125 = 283.11
- Red circuit: ~24.1% each, ~48.3% total
- Green circuit: ~2.58% each, ~51.7% total