fix(flows): tømning ved stop afleverer kun ved flowets egne mål — AD's 2. markør kunne være forældet (æg-markør) eller et Wait-punkt (v1.53.1.0)

This commit is contained in:
2026-09-29 13:46:26 +02:00
parent 417a44841d
commit db9fdf2178
3 changed files with 21 additions and 2 deletions
+14 -1
View File
@@ -89,6 +89,16 @@ function ADFlowWagons.missingBuildings(run, exists, seen)
return missing
end
-- Hvor læsset afleveres ved stop: AD's 2. markør kun hvis den er et af flowets mål — den kan være forældet
-- (gammel AD-tilstand) eller et Wait-punkt, Wait-logikken har skiftet til. Ellers flowets første mål; nil = silo.
function ADFlowWagons.emptyTarget(secondMarkerId, runTargetIds)
local targets = runTargetIds or {}
for _, id in ipairs(targets) do
if id == secondMarkerId then return id end
end
return targets[1]
end
-- Tøm vognen før den parkeres (flowet stoppet): flowets mål -> silo/egen fabrik -> hjem.
-- stage: "start" | "target" | "dump"; s = {cargo, hasTarget, adActive, elapsedMs}
-- -> "home" | "target" | "dump" | "wait" | "giveUp"
@@ -337,7 +347,10 @@ function ADFlowWagons.homeVehicle(adEnv, vehicle, runName)
ADHitch.cancel(vehicle)
end
local module = vehicle.ad ~= nil and vehicle.ad.stateModule or nil
local target = module ~= nil and module.getSecondMarker ~= nil and module:getSecondMarker() or nil
local second = module ~= nil and module.getSecondMarker ~= nil and module:getSecondMarker() or nil
local run = ADRunsController.getRunForVehicle(vehicle)
local targetId = ADFlowWagons.emptyTarget(second ~= nil and second.id or nil, run ~= nil and run.targetWayPointIds or nil)
local target = targetId ~= nil and adEnv.ADGraphManager:getMapMarkerByWayPointId(targetId) or nil
local cargo, fillType = cargoOf(adEnv, vehicle)
local action = ADFlowWagons.emptyStep("start", {cargo = cargo, hasTarget = target ~= nil})
if action == "home" then return goHome(adEnv, vehicle) end
+1 -1
View File
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<modDesc descVersion="107">
<author>masterdraco</author>
<version>1.53.0.0</version>
<version>1.53.1.0</version>
<title>
<en>AD Smart Pickup</en>
</title>
+6
View File
@@ -82,5 +82,11 @@ check("genstart: tømmer -> afbryd", W.abortHomeTripOnStart({emptying = true}),
check("genstart: flowets hjemtur -> afbryd", W.abortHomeTripOnStart({flowHoming = true}), true)
check("genstart: puljens hjemtur (markarbejde) -> rør ikke", W.abortHomeTripOnStart({poolReturning = true}), false)
check("genstart: intet i gang", W.abortHomeTripOnStart({}), false)
-- tøm-mål: kun flowets egne mål — AD's 2. markør kan være forældet (æg-markør) eller et Wait-punkt (in-game 29/9)
check("tøm-mål: AD's mål er et af flowets", W.emptyTarget(12638, {12636, 12638}), 12638)
check("tøm-mål: forældet/Wait-markør -> flowets første mål", W.emptyTarget(12658, {12636, 12638}), 12636)
check("tøm-mål: intet AD-mål -> flowets første", W.emptyTarget(nil, {12636}), 12636)
check("tøm-mål: flow uden mål -> intet (silo)", W.emptyTarget(12658, {}), nil)
check("tøm-mål: ingen liste -> intet", W.emptyTarget(12658, nil), nil)
print(failures == 0 and "\nALLE TESTS OK" or ("\n" .. failures .. " FEJL"))
os.exit(failures == 0 and 0 or 1)