So i share it for anyone want it, you can use it, edit it or watever you want :
Code: Select all
local SwitchTo = {
[ "iron-stick" ] = { "iron-plate", 2 },
[ "iron-gear-wheel" ] = { "iron-plate", 2 },
[ "wood" ] = { "raw-wood", 1 },
[ "copper-cable" ] = { "copper-plate", 2 },
[ "heavy-oil" ] = { "crude-oil", 1 },
[ "light-oil" ] = { "crude-oil", 1 },
[ "petroleum-gas" ] = { "crude-oil", 1 },
[ "lubricant" ] = { "crude-oil", 1 }
}
for _, r in pairs( data.raw.recipe ) do
-- Switching to the new recipe system ( normal only ! )
if r.normal == nil then
r.normal = {}
r.normal.ingredients = r.ingredients
r.ingredients = nil
end
if r.result ~= nil then
r.normal.result = r.result
r.result = nil
end
if r.results ~= nil then
r.normal.results = r.results
r.results = nil
end
if r.result_count ~= nil then
r.normal.result_count = r.result_count
r.result_count = nil
end
if r.requester_paste_multiplier ~= nil then
r.normal.requester_paste_multiplier = r.requester_paste_multiplier
r.requester_paste_multiplier = nil
end
for k, v in pairs( r.normal.ingredients ) do
-- Using id instead of numeric index
if v.name == nil then
v.amount = v[ 2 ]
v.name = v[ 1 ]
v[ 2 ] = nil
v[ 1 ] = nil
end
-- Cleanup unwanted item ( here you can delete this code, it's only made for my personnal use )
if SwitchTo[ v.name ] then
v.amount = math.ceil( v.amount / SwitchTo[ v.name ][ 2 ] )
v.name = SwitchTo[ v.name ][ 1 ]
end
-- Cleaning duplicate entry
for i = #r.normal.ingredients, 1, -1 do
for k, v in pairs( r.normal.ingredients ) do
if r.normal.ingredients[ k ] ~= nil and r.normal.ingredients[ i ] ~= nil then
if r.normal.ingredients[ i ].name == r.normal.ingredients[ k ].name and k ~= i and
r.normal.ingredients[ k ].amount ~= nil and r.normal.ingredients[ i ].amount ~= nil then
r.normal.ingredients[ k ].amount = r.normal.ingredients[ k ].amount + r.normal.ingredients[ i ].amount
r.normal.ingredients[ i ] = nil
end
end
end
end
end
end
Also i'm not sure why, but using this system unlock some recipes ( plane, transfer belt and a cool weapon xD ).
How work this script, first off i create all needed entry to switch between normal entry to new entries ( normal / expensive ( where isn't use at all here, it work only for normal because i don't need expensive ) then for my mod i switch unwanted item to base item and keep material ratio.
After that, i need to cleanup duplicate keys ... because you know by switching "iron-stick" to "iron-plate" you have in some case :
Code: Select all
{
{ "iron-plate", 2 },
{ "iron-plate", 3 }
}
To finish my script also clean all unwanted data key, just to cleanup the code ! It work fast but idk about compatibility with other mod, i think it was better to implement it on your own code if you want use it, but ! for the second time, be careful about compatibility, because this script work on ALL recipe registered.
Hope to help someone with that.