Add ability to loss quality level when crafting.
Posted: Fri Jun 05, 2026 8:52 pm
What?
Add modifier quality_loss to Effect type:
https://lua-api.factorio.com/latest/types/Effect.html
Add reference previous to QualityPrototype:
https://lua-api.factorio.com/latest/pro ... .html#next
It will work similar to quality effect, but in opposite way:
- If machine have total quality_loss 0 or below, than nothing happens (vanilla way, can be optimized out somehow after prototype stage if non entity provides quality_loss)
- If machine have total quality_loss above 0, than “quality loss roll” performs
- When it called, if current QualityPrototype has previous property, if quality loss roll succeed, quality of crafting result decreased
Optional suggestions (I think it will be good, but I will be happy with any variant of implementation):
- “Quality loss roll” performs after regular quality roll
- Add previous_probability similar to next_probability at QualityPrototype. Which allows to loose multiple quality level at once
https://lua-api.factorio.com/latest/pro ... robability
- “Quality loss roll” can be inserted into 1 randomize call via math
Why?
Quality loss will allow to make more dynamic balance between up-cycling raw resources vs finished product.
For example: When you get legendary iron plates, but it quality drops to rare when you gen processors from it, and you need up-cycle/recycle them again.
Another example: You should select to use quality modules when doing legendary staff from legendary to decrease quality loss versus productivity modules.
Independent previous field on QualityPrototype (instead of use next) will allow 2 things:
- Currently we can have multiple levels have the same next. If some mod done this – it will be its responsibility to provide correct previous.
- It allow making independent loss levels between original levels
Example: Add “broken” variant to each normal level. So upcycling will go Normal → Uncommon → Rare → ... and down-cycling Rare→Broken Rare → Uncommon → Broken Uncommon → …
Another interesting use case: Add 100% quality loss to recycler, which seems logical (when you break something you lose quality) and make up-cycling mechanics much different.
Vanilla:
I think even vanilla van benefit from this:
Adding quality loss for some inaccurate machines (recyclers, crushers, low tier assemblers) will seems logical.
Quality modules can fix this by having big quality_loss positive modifier.
Speed modules can have some bigger quality_loss modifier then they quality modifier, making usage of speed module more practical in low quality setups and less practical in high quality setups.
But all vanilla thing is just an ideas why this can be usefull, not part of this request.
Add modifier quality_loss to Effect type:
https://lua-api.factorio.com/latest/types/Effect.html
Add reference previous to QualityPrototype:
https://lua-api.factorio.com/latest/pro ... .html#next
It will work similar to quality effect, but in opposite way:
- If machine have total quality_loss 0 or below, than nothing happens (vanilla way, can be optimized out somehow after prototype stage if non entity provides quality_loss)
- If machine have total quality_loss above 0, than “quality loss roll” performs
- When it called, if current QualityPrototype has previous property, if quality loss roll succeed, quality of crafting result decreased
Optional suggestions (I think it will be good, but I will be happy with any variant of implementation):
- “Quality loss roll” performs after regular quality roll
- Add previous_probability similar to next_probability at QualityPrototype. Which allows to loose multiple quality level at once
https://lua-api.factorio.com/latest/pro ... robability
- “Quality loss roll” can be inserted into 1 randomize call via math
Why?
Quality loss will allow to make more dynamic balance between up-cycling raw resources vs finished product.
For example: When you get legendary iron plates, but it quality drops to rare when you gen processors from it, and you need up-cycle/recycle them again.
Another example: You should select to use quality modules when doing legendary staff from legendary to decrease quality loss versus productivity modules.
Independent previous field on QualityPrototype (instead of use next) will allow 2 things:
- Currently we can have multiple levels have the same next. If some mod done this – it will be its responsibility to provide correct previous.
- It allow making independent loss levels between original levels
Example: Add “broken” variant to each normal level. So upcycling will go Normal → Uncommon → Rare → ... and down-cycling Rare→Broken Rare → Uncommon → Broken Uncommon → …
Another interesting use case: Add 100% quality loss to recycler, which seems logical (when you break something you lose quality) and make up-cycling mechanics much different.
Vanilla:
I think even vanilla van benefit from this:
Adding quality loss for some inaccurate machines (recyclers, crushers, low tier assemblers) will seems logical.
Quality modules can fix this by having big quality_loss positive modifier.
Speed modules can have some bigger quality_loss modifier then they quality modifier, making usage of speed module more practical in low quality setups and less practical in high quality setups.
But all vanilla thing is just an ideas why this can be usefull, not part of this request.