I've been wrestling with the new prototypes while updating my Assemblybots mod. I thought I'd share some things I've found and seek clarification on some other things.
First up, some (but not all) recipes now have their ingredients and results under recipe.normal and recipe.expensive. Some recipes now have an icons property instead of just icon, particularly the barrelling recipes which are generated in core data-updates.
What I would like to have confirmed is what properties can vary by difficulty, which can only exist at root level, and whether or not a property which could vary can be left at root level if you want the same value for both difficulties?
Apologies if this has been stated elsewhere, but is it possible for mods to add difficulties?
normal / expensive prototypes
- bobingabout
- Smart Inserter
- Posts: 7352
- Joined: Fri May 09, 2014 1:01 pm
- Contact:
Re: normal / expensive prototypes
From what I can tell, it's not possible to mod additional difficulties. how many difficulties there are and what they're called seems to be hard wired in a define. (Which is part of engine code, rather than data code)
As for what is required in root, and what is required per difficulty (if it is required per difficulty, any tag written is root is ignored), I have the following.
type and name OBVIOUSLY have to be in root, as they define what it is. category also seems to be root only, though not confirmed if it works in a difficulty (though I think it would be useful if you could specify crafting for normal, and crafting-with-fluid for expensive to force it to be made in a machine, for example.)
crafting_machine_tint (new tag for chemical plant working colours) seems to also be in root.
energy_required, enabled, ingredients and result/results MUST be specified in the difficulty, if a difficulty tag is specified, any of these in root are ignored, and in the case of ingredients and result/results, if they're missing the game will error.
requester_paste_multiplier seems to be in difficulty too, even though I don't know what it does.
There are other tags too including:
main_product, icon, subgroup, order, and allow_decomposition (not sure what the last one even does either) that haven't been used on any difficulty based recipes yet, so I don't know where they should go(They're all mostly fluid based recipes). All I can sugest is that you put it where you think it should go, and see if it works.
As for what is required in root, and what is required per difficulty (if it is required per difficulty, any tag written is root is ignored), I have the following.
type and name OBVIOUSLY have to be in root, as they define what it is. category also seems to be root only, though not confirmed if it works in a difficulty (though I think it would be useful if you could specify crafting for normal, and crafting-with-fluid for expensive to force it to be made in a machine, for example.)
crafting_machine_tint (new tag for chemical plant working colours) seems to also be in root.
energy_required, enabled, ingredients and result/results MUST be specified in the difficulty, if a difficulty tag is specified, any of these in root are ignored, and in the case of ingredients and result/results, if they're missing the game will error.
requester_paste_multiplier seems to be in difficulty too, even though I don't know what it does.
There are other tags too including:
main_product, icon, subgroup, order, and allow_decomposition (not sure what the last one even does either) that haven't been used on any difficulty based recipes yet, so I don't know where they should go(They're all mostly fluid based recipes). All I can sugest is that you put it where you think it should go, and see if it works.
Re: normal / expensive prototypes
Thanks for this Writeup Bob!
requester_paste_multiplier: This is the default amount of ingredients used when pasted into a requester A multiplier of 2 will paste 2x the ingredients.
main_product is used if you have multiple results. It defines which item locale/sort order to use if they are not specified.
requester_paste_multiplier: This is the default amount of ingredients used when pasted into a requester A multiplier of 2 will paste 2x the ingredients.
main_product is used if you have multiple results. It defines which item locale/sort order to use if they are not specified.
- bobingabout
- Smart Inserter
- Posts: 7352
- Joined: Fri May 09, 2014 1:01 pm
- Contact:
Re: normal / expensive prototypes
Thanks.
I knew about main_product, I'm not not sure how it's supposed to work with normal/expensive, because some things like order I'd guess should be on the recipe root, where results are definitely on the difficulty.
Someone should probably try it and see what happens. Myself, still a little busy working through my own mods to experiment with such things.
I knew about main_product, I'm not not sure how it's supposed to work with normal/expensive, because some things like order I'd guess should be on the recipe root, where results are definitely on the difficulty.
Someone should probably try it and see what happens. Myself, still a little busy working through my own mods to experiment with such things.
Re: normal / expensive prototypes
Just what i was trying to find out myself. As it seems you cannot add a new preset, nor a new recipe modifier other than normal and expensive. So if you want your own marathon recipes, youll have to modify the existing marathon mode.
Re: normal / expensive prototypes
Since I stumbled across expensive fluid recipes here's a demo for making an expensive fluid recipe:
Code: Select all
{
type = "recipe",
name = "basic-oil-processing",
category = "oil-processing",
normal =
{
enabled = false,
energy_required = 5,
ingredients =
{
{type="fluid", name="crude-oil", amount=100}
},
results=
{
{type="fluid", name="heavy-oil", amount=30},
{type="fluid", name="light-oil", amount=30},
{type="fluid", name="petroleum-gas", amount=40}
},
},
expensive =
{
enabled = false,
energy_required = 15,
ingredients =
{
{type="fluid", name="crude-oil", amount=200}
},
results=
{
{type="fluid", name="heavy-oil", amount=30},
{type="fluid", name="light-oil", amount=30},
{type="fluid", name="petroleum-gas", amount=40}
},
},
icon = "__base__/graphics/icons/fluid/basic-oil-processing.png",
subgroup = "fluid-recipes",
order = "a[oil-processing]-a[basic-oil-processing]"
},
My Mods: mods.factorio.com