TL;DR
Allow combinations of different qualities of ingredients to be used at the same time in a production machine, with more of higher quality ingredients giving higher chances of higher quality products, and the lowest quality ingredient being the lowest possible quality product.What?
Instead of selecting a single ingredient quality when choosing a recipe in you production structures, allow combinations of allowed (or disallowed) ingredient qualities. This might sound impossible, but it's not. Here's how I currently envision it working (subject of course to refinement if people suggest better ideas or improvements on how to make it work):Each item in game is assigned a "component amount value" (or CAV) that indicates how much of a product that that thing makes up when used as an ingredient. More complex items have a higher value than simpler ones, because they are made of more component materials. So, for example,
- Iron Ore is a very base level component. It would have a CAV of 1. (Or we could start at 10 or something in case other lower items get added later, but for now lets say 1).
- Iron Plate is made of 1 iron ore, and thus, also has a CAV of 1.
- Steel Plates are each made of 5 Iron Plates, and thus have a CAV of 5.
- Copper Plate, or course, would also have a CAV of 1.
- Batteries are made with 1 Iron and 1 Copper Plate. Their CAV=2.
...and so on and so forth.
Now, suppose I have a mix of different qualities of supplies for building myself some... lets say Cargo Bays... for a new space platform I'm building.
Cargo bays are made of/use the following components and sub-components:
- Iron Plate (1 CAV ea.)
- Copper Plate (1 CAV ea.)
- Cable (0.5 CAV ea.)
- Green Circuits (2.5 CAV ea.)
- Plastic (0.5 CAV ea.)
- Red Circuits (8 CAV ea.)
- Blue Circuits (66 CAV ea.)
- Steel Plate (5 CAV ea.)
- LDS (32.5 CAV ea.)
Total Materials for the C.Bay
- 20 Steel Plate (100 CAV @ 5 ea.)
- 5 Blue Circuits (330 CAV @ 66 ea.)
- 20 LDS (650 CAV @ 32.5 ea.)
= 1080 total CAV.
Now, lets say I tell my assembler to use any quality it can get. (Obviously, this means it will need an array of input slots, with a fresh row appearing for each separate quality that gets inserted. Clunky, I know, but lets run with it for now.) Inserters will grab ingredients of any quality available off the belt, so lets use a random number generator for this example to simulate a random mix of ingredients. And the results are...
Steel Plate: 3 comn (15 CAV), 4 uncomn (20 CAV), 4 rare (20 CAV), 3 epic (15 CAV), 6 legd (30 CAV)
Blue C.: 2 epic (132 CAV), 3 legd (198 CAV)
LDS: 3 comn (97.5 CAV), 2 uncmn (65 CAV), 7 rare (227.5 CAV), 5 epic (162.5 CAV), 3 legd (97.5 CAV)
Total CAV in Each Quality:
Common = 112.5 (10.416% of the total CAV that the C.Bay is made of)
Uncommon = 85 (7.87% of C.Bay total)
Rare = 247.5 (22.916%)
Epic = 309.5 (28.657%)
Legendary = 325.5 (30.139%)
Not a typically realistic distribution, I know, but it serves its purpose for this example.
As I'm sure you've already guessed, those percentages of the Cargo Bay's total component amount value are the base chances of getting a cargo bay of their corresponding qualities, BEFORE factoring in quality modules. After the quality of the product has been decided from components, any Q.modules would then have their chance to upgrade it further.
Some final notes/reviews on what this means:
- The lowest quality ingredient used would be the lowest possible product.
- The highest quality ingredient would be the highest possible product, unless quality modules are used.
- Input slots in production structures would have to be expanded to include a row for each quality. (The interface could grow these rows dynamically as more qualities are used, in order to keep things as simple as possible.)
- When selecting ingredient quality for a recipe, you would be able to specify any combination of qualities desired. (Say, for example, I could allow common, uncommon, rare, and epic, but leave legendary unchecked in order to save it. Or I could allow only the use of Rare or higher if I want the builder to pick out ingredients for products of at least that quality.)
Why?
Well, for starters, it immediately bugged me on my first playthrough when I discovered that this was impossible. It seemed so obvious. Like, "that's how it would work, so why doesn't it?"With more experience, I realized the probable reason for why this ability wasn't made possible. The need to sort out qualities to avoid blockages provides a logistical challenge for players to have fun figuring out.
On the other hand though, I think other things could be gained from implementing such a system. The ability to mix qualities like this reminds me of one of the VERY BEST crafting systems that I have EVER encountered in ANY game. Period. By a WIDE margin. Namely, the system used during the mid-beta releases of a once great but now dead game called Firefall.
Factorio is not Firefall, and this feature would not turn Factorio's crafting system into Firefall's. Not by a long shot. Nor should it. But I still think there are some ways in which Factorio could benefit in similar ways from doing this similar thing.
Maybe that's just me, and other people wouldn't find this as fun as I think I would. Perhaps it would be better for me to go straight to making a mod that does this, instead of trying to propose it for the base game. Then again, I figure it's at least worth presenting with an open mind as a possibility. Constructive criticism will be valued and enjoyed.