fix: forsyning med flere mål vælger målet med færrest andre vogne på vej før mindst fyldte (3 biogas-vogne i kø ved samme drop) (v1.28.3.0)
This commit is contained in:
@@ -372,18 +372,22 @@ function ADRunsController.chooseTarget(adEnv, run, vehicle)
|
||||
end
|
||||
local farmId = ADSmartPickup.getFarmId(vehicle)
|
||||
local ingredients = ADRunsController.getRunIngredients(adEnv, run, vehicle)
|
||||
local bestId, bestNeed = nil, nil
|
||||
local bestId, bestNeed, bestInbound = nil, nil, 0
|
||||
for _, entry in ipairs(getTargetStations(adEnv, run, farmId)) do
|
||||
-- læs andre traktorer er på vej med til stalden, tæller med — så fordeler de sig på staldene
|
||||
local pending = ADSmartPickup.getPending ~= nil and ADSmartPickup.getPending(entry.wayPointId, vehicle) or nil
|
||||
local ranked = ADSmartPickup.getTargetNeedsRanked(entry.station, ingredients, farmId, pending)
|
||||
local need = ranked[1]
|
||||
if need ~= nil and need.freeSpace >= (ADSupplyPlanner.MIN_FREE_LITERS or 1000) then
|
||||
-- færrest andre vogne på vej først: et drop (drive-on-bunker, trug) tager én ad gangen, så tre
|
||||
-- vogne mod det mindst fyldte mål holder i kø mens de andre mål står tomme (in-game 26/9)
|
||||
local inbound = ADSmartPickup.countEnRoute ~= nil and ADSmartPickup.countEnRoute(entry.wayPointId, vehicle) or 0
|
||||
local isBetter = bestNeed == nil
|
||||
or (need.fits == true and bestNeed.fits ~= true)
|
||||
or (need.fits == bestNeed.fits and need.score > bestNeed.score)
|
||||
or inbound < bestInbound
|
||||
or (inbound == bestInbound and need.fits == true and bestNeed.fits ~= true)
|
||||
or (inbound == bestInbound and need.fits == bestNeed.fits and need.score > bestNeed.score)
|
||||
if isBetter then
|
||||
bestId, bestNeed = entry.wayPointId, need
|
||||
bestId, bestNeed, bestInbound = entry.wayPointId, need, inbound
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user