diff --git a/FS25_ADSmartPickup/adFieldFleet.lua b/FS25_ADSmartPickup/adFieldFleet.lua index d89b535..b477791 100644 --- a/FS25_ADSmartPickup/adFieldFleet.lua +++ b/FS25_ADSmartPickup/adFieldFleet.lua @@ -18,8 +18,9 @@ ADFieldFleet.ROLE_SPECS = { {role = "weeder", spec = "spec_weeder"}, {role = "sprayRole"}, {role = "mulcher", spec = "spec_mulcher"}, - {role = "cultivator", spec = "spec_cultivator"}, + -- plov før kultivator: FS25-plove har også spec_cultivator (in-game 28/9: POV 5 XL blev "kultivator") {role = "plow", spec = "spec_plow"}, + {role = "cultivator", spec = "spec_cultivator"}, {role = "baleCollector", spec = "canBaleCollect"}, {role = "unloader", spec = "canUnload"}, } @@ -35,6 +36,13 @@ function ADFieldFleet.roleFromSpecs(specs) return nil end +-- Ekstra opgaver en rolle kan tage: pløjning klargør jorden lige så godt som kultivering (ikke omvendt). +ADFieldFleet.EXTRA_ROLES = {plow = {plow = true, cultivator = true}} + +function ADFieldFleet.rolesFor(role) + return ADFieldFleet.EXTRA_ROLES[role] +end + -- Kandidater med rollen, sorteret nærmest først, delt i brugbare og afviste (med første grund). local function sortCandidates(candidates, role, x, z, requiredWidth, accept) local usable, sawRole, sawAccepted = {}, false, false diff --git a/FS25_ADSmartPickup/adFieldWork.lua b/FS25_ADSmartPickup/adFieldWork.lua index 887b96b..e8cf0d0 100644 --- a/FS25_ADSmartPickup/adFieldWork.lua +++ b/FS25_ADSmartPickup/adFieldWork.lua @@ -162,7 +162,7 @@ function ADFieldWork.getRigs(adEnv) manual = (state.manual or {})[id] == true, width = ADCpBridge.getWorkWidth(vehicle), x = x, z = z, -- tom spreder kan flere ting (gødning og kalk): alle dens roller - roles = specs.sprayRoles, filledRole = specs.filledRole, dumpable = specs.dumpable, + roles = specs.sprayRoles or ADFieldFleet.rolesFor(role), filledRole = specs.filledRole, dumpable = specs.dumpable, } if role == "harvester" then rig.fruits = ADCpBridge.getHarvestFruits(vehicle) or {} end if role == "seeder" then diff --git a/FS25_ADSmartPickup/adPool.lua b/FS25_ADSmartPickup/adPool.lua index 42b1045..0d45732 100644 --- a/FS25_ADSmartPickup/adPool.lua +++ b/FS25_ADSmartPickup/adPool.lua @@ -231,7 +231,7 @@ function ADPool.collect(adEnv, isBusy) 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), + role = role, roles = specs.sprayRoles or ADFieldFleet.rolesFor(role), x = x, z = z, width = ADCpBridge.getWorkWidth(vehicle), neededHp = neededHpOf(vehicle), connectId = connect.id, parkId = park.id, }) end diff --git a/FS25_ADSmartPickup/modDesc.xml b/FS25_ADSmartPickup/modDesc.xml index dc609e2..9127422 100644 --- a/FS25_ADSmartPickup/modDesc.xml +++ b/FS25_ADSmartPickup/modDesc.xml @@ -1,7 +1,7 @@ masterdraco - 1.48.1.0 + 1.48.2.0 <en>AD Smart Pickup</en> diff --git a/tests/test_adFieldFleet.lua b/tests/test_adFieldFleet.lua index 10aaf71..5792e63 100644 --- a/tests/test_adFieldFleet.lua +++ b/tests/test_adFieldFleet.lua @@ -133,5 +133,12 @@ check("FLV F18 ser kun de frie", #vis .. "/" .. hid .. "/" .. tostring(flds[1]), check("FLV F22 ser alle", #(F.visibleForField(vrigs, 22, {[22] = {"vogn", "harve"}})), 3) check("FLV ingen valgt = alle", #(F.visibleForField(vrigs, nil, {[22] = {"vogn"}})), 3) +-- FL-plov: FS25-plove har også spec_cultivator — de er plove, men må også tage kultivering +check("FLP plov med kultivator-spec er plov", F.roleFromSpecs({spec_plow = true, spec_cultivator = true}), "plow") +check("FLP plov kan kultivere", F.rolesFor("plow").cultivator, true) +check("FLP plov kan pløje", F.rolesFor("plow").plow, true) +check("FLP kultivator kan ikke pløje", F.rolesFor("cultivator"), nil) +local plough = {id = "p", role = "plow", roles = F.rolesFor("plow"), enabled = true, x = 0, z = 0, width = 3} +check("FLP plov vælges til kultivering", (F.pick({plough}, "cultivator", 0, 0, nil)).id, "p") print(failures == 0 and "\nALLE TESTS OK" or ("\n" .. failures .. " FEJL")) os.exit(failures == 0 and 0 or 1)