diff --git a/FS25_ADSmartPickup/adFieldJobs.lua b/FS25_ADSmartPickup/adFieldJobs.lua index 0fb1053..80c5b59 100644 --- a/FS25_ADSmartPickup/adFieldJobs.lua +++ b/FS25_ADSmartPickup/adFieldJobs.lua @@ -39,10 +39,16 @@ ADFieldJobs.PREP_STAGES = {strawCollecting = true, baling = true, baleCollecting -- ---- ren beslutning ---- --- Er afgrøden taget (trin med afgrøde)? Slåning: under 50 % står. Høst: marken er bar eller under 50 %. +-- Er afgrøden taget (trin med afgrøde)? Slåning: under 50 % står. Høst: marken er bar, eller under 5 % af HELE +-- marken står (rester i hjørnerne). readyRatio regner kun med den afgrøde der er tilbage, så en halvt høstet mark +-- lignede "væk" (in-game 27/9 F111 gik til kultivering med halvdelen stående). +ADFieldJobs.HARVEST_DONE_RATIO = 0.05 local function cropGone(stage, info) if info == nil then return false end if stage == "harvesting" and info.kind == "bare" then return true end + if stage == "harvesting" and type(info.standingRatio) == "number" then + return info.standingRatio < ADFieldJobs.HARVEST_DONE_RATIO + end return (info.readyRatio or 0) < ADFieldModel.CUT_RATIO end @@ -129,8 +135,9 @@ function ADFieldJobs.decide(field, info, assignments, now, env) end -- klargøring på en mark hvor afgrøden står uhøstet: tilbage til klar (in-game 27/9 F16: kartofler -- blev regnet som høstet, og marken stod til kultivering med afgrøden i jorden) + local standing = info ~= nil and type(info.standingRatio) == "number" and info.standingRatio >= ADFieldJobs.HARVEST_DONE_RATIO if ADFieldJobs.PREP_STAGES[field.stage] and info ~= nil and info.kind == "harvest" and info.phase == "ready" - and (info.readyRatio or 0) >= ADFieldModel.READY_RATIO then + and (standing or (info.readyRatio or 0) >= ADFieldModel.READY_RATIO) then return {action = "rewind"} end if not ADFieldModel.isWorking(field) then diff --git a/FS25_ADSmartPickup/modDesc.xml b/FS25_ADSmartPickup/modDesc.xml index 26b6fa3..c4dc898 100644 --- a/FS25_ADSmartPickup/modDesc.xml +++ b/FS25_ADSmartPickup/modDesc.xml @@ -1,7 +1,7 @@ masterdraco - 1.42.2.0 + 1.42.3.0 <en>AD Smart Pickup</en> diff --git a/tests/test_adFieldJobs.lua b/tests/test_adFieldJobs.lua index f149f26..96e06fb 100644 --- a/tests/test_adFieldJobs.lua +++ b/tests/test_adFieldJobs.lua @@ -158,5 +158,17 @@ check("MD første udsendelse", ADFieldJobs.mayDispatch(5000, nil), true) check("MD for tæt på forrige", ADFieldJobs.mayDispatch(5000 + ADFieldJobs.DISPATCH_GAP_MS - 1, 5000), false) check("MD efter mellemrummet", ADFieldJobs.mayDispatch(5000 + ADFieldJobs.DISPATCH_GAP_MS, 5000), true) + +-- halvt høstet mark (in-game 27/9 F111): høsten er ikke færdig før næsten intet står; en mark i klargøring med +-- stående afgrøde spoles tilbage +do + local halfInfo = {id = 111, markerId = 5, kind = "harvest", phase = "ready", readyRatio = 0.45, standingRatio = 0.45, fruitIndex = 1} + check("HH halvt høstet uden høster -> send høster (ikke videre)", J.decide(harvesting, halfInfo, {}, 0).action, "dispatch") + local doneInfo = {id = 111, markerId = 5, kind = "harvest", phase = "ready", readyRatio = 0.02, standingRatio = 0.02, fruitIndex = 1} + check("HH næsten intet står -> videre", J.decide(harvesting, doneInfo, {}, 0).action, "advance") + local cultivating = M.with(harvesting, {stage = "cultivating"}) + check("HH klargøring med halv mark stående -> spol tilbage", J.decide(cultivating, halfInfo, {}, 0).action, "rewind") +end + print(failures == 0 and "\nALLE TESTS OK" or ("\n" .. failures .. " FEJL")) os.exit(failures == 0 and 0 or 1)