feat(markarbejde): manuel transport af brede høstere — flueben pr. høster i markflåden; moden beder spilleren køre den til marken og montere skærebordet (dialog + påmindelse hvert 5. min), overtager når den står på marken med passende skærebord og spilleren er steget ud (eller ved Start nu), tømmevogne først når høsten kører, ingen AD-parkering bagefter (v1.38.0.0)

This commit is contained in:
2026-09-27 14:05:27 +02:00
parent 12647087ef
commit 6afcae6fe1
11 changed files with 231 additions and 34 deletions
+32
View File
@@ -0,0 +1,32 @@
-- 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? Manuel: ja — skærebordet monteres først på marken (tjekkes ved overtagelse).
-- Ellers skal det monterede skærebord kunne tage afgrøden.
function ADManualTransport.acceptsHarvester(candidate, fruit)
if fruit == nil then return false end
if candidate.manual then return true end
return candidate.fruits ~= nil and candidate.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