-- AD Manual Transport -- Brede høstere (mejetærsker med skærebord) kan ikke køre på vejene: spilleren kører dem til marken, monterer -- skærebordet og stiger ud; moden overtager derfra. Rene regler (testbare uden spillet); spil-delen ligger i -- adFieldWork. ADManualTransport = {} ADManualTransport.REMIND_MS = 300000 -- påmindelse hvert 5. minut, mens moden venter på spilleren -- Må høsteren vælges til marken? Det monterede skærebord/optager skal kunne tage afgrøden. Undtagelse: en manuel -- høster UDEN skærebord monteret (det monteres først på marken — tjekkes ved overtagelse). En roeoptager har sin -- optager fast på og kan aldrig tage hvede (in-game 27/9: F111 valgte roeoptageren). function ADManualTransport.acceptsHarvester(candidate, fruit) if fruit == nil then return false end local fruits = candidate.fruits or {} if candidate.manual and next(fruits) == nil then return true end return fruits[fruit] == true end -- Klar til overtagelse? s = {atField, fruits = {[fruit] = true}, fruit, controlled, forced}. -- Returnerer true, eller false + grund: "notThere" | "noHeader" | "wrongHeader" | "playerInside". -- forced ("Start nu"): sted og spiller springes over, skærebordet tjekkes stadig. function ADManualTransport.readiness(s) if not s.forced and not s.atField then return false, "notThere" end local fruits = s.fruits or {} if next(fruits) == nil then return false, "noHeader" end if s.fruit == nil or not fruits[s.fruit] then return false, "wrongHeader" end if not s.forced and s.controlled then return false, "playerInside" end return true end function ADManualTransport.shouldRemind(lastAt, now) return lastAt == nil or now - lastAt >= ADManualTransport.REMIND_MS end