fix: læs-bytte også når vognen er større end staldens lager — nok at en anden vare mangler 25 % (v1.13.7.0)
This commit is contained in:
@@ -9,6 +9,8 @@ ADLoadSwap = {}
|
|||||||
ADLoadSwap.LOG_PREFIX = "ADSmartPickup: "
|
ADLoadSwap.LOG_PREFIX = "ADSmartPickup: "
|
||||||
-- Opslaget går over alle markører; ventende traktorer tjekker derfor kun så tit.
|
-- Opslaget går over alle markører; ventende traktorer tjekker derfor kun så tit.
|
||||||
ADLoadSwap.CHECK_INTERVAL_MS = 5000
|
ADLoadSwap.CHECK_INTERVAL_MS = 5000
|
||||||
|
-- Byt også når et fuldt læs ikke passer, hvis den manglende vare mangler mindst så stor en andel af sit lager.
|
||||||
|
ADLoadSwap.MIN_MISSING_FRACTION = 0.25
|
||||||
|
|
||||||
local warnedNoSilo = setmetatable({}, {__mode = "k"})
|
local warnedNoSilo = setmetatable({}, {__mode = "k"})
|
||||||
|
|
||||||
@@ -19,7 +21,15 @@ function ADLoadSwap.findMissingIngredient(adEnv, vehicle, restFillType, homeWayP
|
|||||||
return nil
|
return nil
|
||||||
end
|
end
|
||||||
local choice = ADSmartPickup.findSupplyPickup(adEnv, vehicle, ingredients, homeWayPointId)
|
local choice = ADSmartPickup.findSupplyPickup(adEnv, vehicle, ingredients, homeWayPointId)
|
||||||
if choice == nil or choice.fillType == nil or choice.fillType == restFillType or choice.need.fits ~= true then
|
if choice == nil or choice.fillType == nil or choice.fillType == restFillType then
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
-- Et fuldt læs der passer er det bedste; men er vognen større end staldens lager, passer det aldrig
|
||||||
|
-- (Fastrac med stor vogn ved en kostald) — så er det nok at varen mangler en tydelig del.
|
||||||
|
local need = choice.need
|
||||||
|
local missesEnough = need.capacity ~= nil and need.capacity > 0 and need.freeSpace ~= nil
|
||||||
|
and need.freeSpace >= need.capacity * ADLoadSwap.MIN_MISSING_FRACTION
|
||||||
|
if need.fits ~= true and not missesEnough then
|
||||||
return nil
|
return nil
|
||||||
end
|
end
|
||||||
return choice
|
return choice
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||||
<modDesc descVersion="107">
|
<modDesc descVersion="107">
|
||||||
<author>masterdraco</author>
|
<author>masterdraco</author>
|
||||||
<version>1.13.6.0</version>
|
<version>1.13.7.0</version>
|
||||||
<title>
|
<title>
|
||||||
<en>AD Smart Pickup</en>
|
<en>AD Smart Pickup</en>
|
||||||
</title>
|
</title>
|
||||||
|
|||||||
@@ -861,14 +861,23 @@ check("S1 AD's mål peger midlertidigt på siloen (ellers tipper AD ikke)", sv.a
|
|||||||
UnloadTask.finished(st)
|
UnloadTask.finished(st)
|
||||||
check("S1 mål gendannet efter aflæsning", sv.ad.stateModule.secondMarkerId, 30)
|
check("S1 mål gendannet efter aflæsning", sv.ad.stateModule.secondMarkerId, 30)
|
||||||
|
|
||||||
-- S2: målet mangler IKKE et fuldt læs af TMR -> bliv ved Wait
|
-- S2: målet mangler kun lidt TMR (10 % af lageret) og et fuldt læs passer ikke -> bliv ved Wait
|
||||||
buildSwapWorld()
|
buildSwapWorld()
|
||||||
waitBarnLevels[TMR] = 75000 -- 25000 fri < 40000 vogn
|
waitBarnLevels[TMR] = 90000 -- 10000 fri < 40000 vogn og < 25 % af 100000
|
||||||
local sv2, st2 = makeUnloadingVehicle("Fastrac Bliv", 522, 5000, 35000)
|
local sv2, st2 = makeUnloadingVehicle("Fastrac Bliv", 522, 5000, 35000)
|
||||||
UnloadTask.update(st2, 16)
|
UnloadTask.update(st2, 16)
|
||||||
UnloadTask.update(st2, ADLoadSwap.CHECK_INTERVAL_MS + 1)
|
UnloadTask.update(st2, ADLoadSwap.CHECK_INTERVAL_MS + 1)
|
||||||
check("S2 bliver ved Wait", st2.destinationID, 40)
|
check("S2 bliver ved Wait", st2.destinationID, 40)
|
||||||
|
|
||||||
|
-- S2b: vognen er større end stalden (fuldt læs passer aldrig), men TMR mangler 25 % -> byt alligevel
|
||||||
|
-- (in-game 24/9: Fastrac'erne byttede aldrig, fordi vognen er større end staldens lager)
|
||||||
|
buildSwapWorld()
|
||||||
|
waitBarnLevels[TMR] = 75000 -- 25000 fri < 40000 vogn, men = 25 % af 100000
|
||||||
|
local sv2b, st2b = makeUnloadingVehicle("Fastrac Stor", 526, 5000, 35000)
|
||||||
|
UnloadTask.update(st2b, 16)
|
||||||
|
UnloadTask.update(st2b, ADLoadSwap.CHECK_INTERVAL_MS + 1)
|
||||||
|
check("S2b bytter når 25 % mangler", st2b.destinationID, 21)
|
||||||
|
|
||||||
-- S3: ingen silo med plads/vare -> bliv ved Wait, én WARN
|
-- S3: ingen silo med plads/vare -> bliv ved Wait, én WARN
|
||||||
buildSwapWorld()
|
buildSwapWorld()
|
||||||
stations[2].getFreeCapacity = function() return 1000 end
|
stations[2].getFreeCapacity = function() return 1000 end
|
||||||
|
|||||||
Reference in New Issue
Block a user