fix(kæde): slutprodukter gården selv bruger sælges aldrig straks; tidligere salg sættes tilbage (v1.61.6.0)
This commit is contained in:
@@ -123,9 +123,30 @@ function ADChainActions.mergeIdle(runs)
|
||||
return merges
|
||||
end
|
||||
|
||||
-- Slutprodukter der skal sælges straks: aktive rødders udgange, som ikke selv er en kant i kæden (mellemvare).
|
||||
-- keep = {[rodnøgle] = true} for rødder spilleren har sat til "Behold". -> {{key, fillType}}
|
||||
function ADChainActions.finalSales(chain, recipes, edges, keep)
|
||||
-- Varer gården selv bruger: stalde æder dem, en tændt produktion bruger dem, gården har forbrug af dem, eller et
|
||||
-- flow (ikke udkørsel) kører dem. -> {[vare] = true}. Den slags sælges aldrig straks (in-game 30/9: TMR og roesnitter).
|
||||
function ADChainActions.farmUses(data, runs)
|
||||
local uses = {}
|
||||
for name in pairs((data or {}).barnFood or {}) do uses[name] = true end
|
||||
for name, rate in pairs((data or {}).rates or {}) do
|
||||
if (rate.consumption or 0) > 0 then uses[name] = true end
|
||||
end
|
||||
for _, recipe in ipairs((data or {}).recipes or {}) do
|
||||
if recipe.enabled then
|
||||
for name in pairs(recipe.inputs or {}) do uses[name] = true end
|
||||
end
|
||||
end
|
||||
for _, run in ipairs(runs or {}) do
|
||||
if run.kind ~= "outbound" and run.ingredientMode == "manual" then
|
||||
for _, name in ipairs(run.ingredients or {}) do uses[name] = true end
|
||||
end
|
||||
end
|
||||
return uses
|
||||
end
|
||||
|
||||
-- Slutprodukter der skal sælges straks: aktive rødders udgange, som ikke selv er en kant i kæden (mellemvare) og
|
||||
-- som gården ikke selv bruger (farmUses). keep = {[rodnøgle] = true} for rødder sat til "Behold". -> {{key, fillType}}
|
||||
function ADChainActions.finalSales(chain, recipes, edges, keep, farmUses)
|
||||
local intermediate, byKey, list = {}, {}, {}
|
||||
for _, edge in ipairs(edges or {}) do intermediate[edge.fillType] = true end
|
||||
for _, recipe in ipairs(recipes or {}) do byKey[recipe.key] = recipe end
|
||||
@@ -136,7 +157,7 @@ function ADChainActions.finalSales(chain, recipes, edges, keep)
|
||||
for name in pairs(recipe.outputs or {}) do table.insert(names, name) end
|
||||
table.sort(names)
|
||||
for _, name in ipairs(names) do
|
||||
if not intermediate[name] then table.insert(list, {key = root.key, fillType = name}) end
|
||||
if not intermediate[name] and not (farmUses or {})[name] then table.insert(list, {key = root.key, fillType = name}) end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user