fix(stald): foder-trigger søges i spec_husbandryFood (feedingTrough findes ikke i FS25) når stationen er uden noder — hønsehus; diagnose-log af feltnavne (v1.19.4.0)

This commit is contained in:
2026-09-24 19:47:54 +02:00
parent b86f420a41
commit ff71fb4f43
8 changed files with 78 additions and 19 deletions
+25 -5
View File
@@ -72,6 +72,22 @@ local function getKind(placeable)
return nil
end
local logHusbandryFoodOnce
ADBuildings.findTriggerNodes = function(root, maxDepth) return ADSupplyPlanner.findTriggerNodes(root, maxDepth) end
-- Diagnose én gang pr. stald: hvilke felter foderdataene har, når ingen trigger-node blev fundet.
local loggedFood = setmetatable({}, {__mode = "k"})
logHusbandryFoodOnce = function(placeable)
if loggedFood[placeable] then return end
loggedFood[placeable] = true
local keys = {}
for key, value in pairs(placeable.spec_husbandryFood or {}) do table.insert(keys, tostring(key) .. ":" .. type(value)) end
table.sort(keys)
if Logging ~= nil and Logging.info ~= nil then
Logging.info(ADBuildings.LOG_PREFIX .. "stald '%s' har ingen aflæsnings-trigger; spec_husbandryFood-felter: %s", getName(placeable, "?"), table.concat(keys, ", "))
end
end
-- Trigger-noder pr. bygning: læsse (loadTriggers.triggerNode, pallespawner, objektlager) og
-- aflæsning (unloadTriggers exactFillRootNode/triggerNode/aiNode).
-- loadGroups: én gruppe noder pr. læssepunkt (mælketank, gyllebeholder ...), så hvert punkt får sin
@@ -104,11 +120,15 @@ local function collectNodes(placeable, loadStations, unloadStations)
end
if #nodes > 0 then table.insert(loadGroups, nodes) end
end
-- staldens foderkrybbe (hønsehus: kun krybben, ingen trigger i aflæsningsstationen)
local food = placeable.spec_husbandryFood
local trough = food ~= nil and food.feedingTrough or nil
local troughNode = trough ~= nil and (trough.exactFillRootNode or trough.triggerNode) or nil
if troughNode ~= nil then table.insert(unloadNodes, troughNode) end
-- stald uden aflæsningsnoder i stationen (hønsehus: kun foder-triggeren) -> søg i staldens foderdata
if #unloadNodes == 0 and placeable.getHusbandryFillLevel ~= nil then
for _, node in ipairs(ADSupplyPlanner.findTriggerNodes(placeable.spec_husbandryFood)) do
table.insert(unloadNodes, node)
end
if #unloadNodes == 0 then
logHusbandryFoodOnce(placeable)
end
end
-- stald med egne pallespawnere (hønsehus: æg, fårestald: uld) — én læssegruppe pr. spawner
local husbandryPallets = placeable.spec_husbandryPallets
local seenSpawners = {}