diff --git a/FS25_ADSmartPickup/adPool.lua b/FS25_ADSmartPickup/adPool.lua
index 3aae9b9..d4bd5af 100644
--- a/FS25_ADSmartPickup/adPool.lua
+++ b/FS25_ADSmartPickup/adPool.lua
@@ -133,3 +133,81 @@ function ADPool.blocked(nowMs)
end
return result
end
+
+-- ---- spil ----
+
+local function parkMarker(adEnv, vehicle)
+ local index = vehicle.advd ~= nil and vehicle.advd.parkDestination or nil
+ if type(index) ~= "number" or index < 1 then return nil end
+ return adEnv.ADGraphManager:getMapMarkerById(index)
+end
+
+local function positionOf(vehicle)
+ local x, _, z = getWorldTranslation(vehicle.rootNode)
+ return x, z
+end
+
+-- Butiksdata: redskabets krævede effekt (hk). specs indlæses først, når butikken har vist varen.
+local function neededHpOf(vehicle)
+ if g_storeManager == nil or vehicle.configFileName == nil then return nil end
+ local item = g_storeManager:getItemByXMLFilename(vehicle.configFileName)
+ if item == nil then return nil end
+ if item.specs == nil and StoreItemUtil ~= nil and StoreItemUtil.loadSpecsFromXML ~= nil then
+ pcall(StoreItemUtil.loadSpecsFromXML, item)
+ end
+ return item.specs ~= nil and ADPool.numberOf(item.specs.neededPower) or nil
+end
+
+-- Traktorens effekt i hk: motorens topeffekt (kW) omregnet; ellers butiksdata.
+local function tractorHpOf(vehicle)
+ local motor = vehicle.spec_motorized ~= nil and vehicle.spec_motorized.motor or nil
+ local kw = motor ~= nil and motor.peakMotorPower or nil
+ if type(kw) == "number" and kw > 0 then return kw * 1.35962 end
+ if g_storeManager == nil or vehicle.configFileName == nil then return nil end
+ local item = g_storeManager:getItemByXMLFilename(vehicle.configFileName)
+ return item ~= nil and item.specs ~= nil and ADPool.numberOf(item.specs.power) or nil
+end
+
+local function isAttached(vehicle)
+ return vehicle.getAttacherVehicle ~= nil and vehicle:getAttacherVehicle() ~= nil
+end
+
+-- Puljeredskaber (frakoblet, parkering "X", markør "Connect X") og puljetraktorer.
+-- isBusy(vehicle): markarbejdets optaget-regel (opgave, AD/CP kører, lånt af marksilo, på hjemtur).
+function ADPool.collect(adEnv, isBusy)
+ local markers = adEnv.ADGraphManager:getMapMarkers()
+ local farmId = g_currentMission:getFarmId()
+ local implements, tractors = {}, {}
+ -- spillets egen liste: frakoblede redskaber er ikke nødvendigvis i AutoDrive's køretøjsliste
+ for _, vehicle in pairs(g_currentMission.vehicleSystem.vehicles) do
+ local owned = vehicle.getOwnerFarmId ~= nil and vehicle:getOwnerFarmId() == farmId
+ if owned and vehicle.spec_motorized == nil and vehicle.spec_attachable ~= nil and not isAttached(vehicle) then
+ local park = parkMarker(adEnv, vehicle)
+ local connect = park ~= nil and ADPool.connectFor(park.name, markers) or nil
+ local specs = connect ~= nil and ADCpBridge.getSpecs(vehicle) or nil
+ local role = specs ~= nil and ADPool.roleOf(specs) or nil
+ if role ~= nil then
+ local x, z = positionOf(vehicle)
+ table.insert(implements, {
+ id = ADRunsController.getVehicleId(vehicle), vehicle = vehicle, name = ADRuns.vehicleLabel(vehicle),
+ role = role, roles = specs.sprayRoles, x = x, z = z, width = ADCpBridge.getWorkWidth(vehicle),
+ neededHp = neededHpOf(vehicle), connectId = connect.id, parkId = park.id,
+ })
+ end
+ end
+ end
+ local state = ADFieldJobs.state
+ for _, vehicle in ipairs(ADRunsController.getFarmVehicles(adEnv)) do
+ local id = ADRunsController.getVehicleId(vehicle)
+ local park = parkMarker(adEnv, vehicle)
+ local controlled = vehicle.getIsControlled ~= nil and vehicle:getIsControlled()
+ if id ~= nil and park ~= nil and vehicle.spec_attacherJoints ~= nil and #ADHitch.rearImplementsOf(vehicle) == 0
+ and ADRunsController.getRunForVehicle(vehicle) == nil and not controlled and not isBusy(vehicle)
+ and not ADPool.isReturning(vehicle) and ADFieldFleet.isEnabled(state.fleetMode, state.fleet, id) then
+ local x, z = positionOf(vehicle)
+ table.insert(tractors, {id = id, vehicle = vehicle, name = ADRuns.vehicleLabel(vehicle), x = x, z = z,
+ hp = tractorHpOf(vehicle), parkId = park.id})
+ end
+ end
+ return implements, tractors
+end
diff --git a/FS25_ADSmartPickup/modDesc.xml b/FS25_ADSmartPickup/modDesc.xml
index 000a100..31b8edd 100644
--- a/FS25_ADSmartPickup/modDesc.xml
+++ b/FS25_ADSmartPickup/modDesc.xml
@@ -47,6 +47,7 @@
+