fix(ejerskab): jord-bundne kortanlæg (boughtWithFarmland / ejer 15) er gårdens når jorden under dem er købt — Dakotas BGA500kw på jordlod 69 (v1.17.7.0)

This commit is contained in:
2026-09-24 04:57:12 +02:00
parent b603bd7765
commit c814557ae1
8 changed files with 84 additions and 13 deletions
+38 -8
View File
@@ -84,19 +84,49 @@ function ADPrices.isSellingStation(station)
return true
end
function ADPrices.isOwnedByPlayer(placeable)
local owner = nil
-- Placeable-ejeren (nil = ukendt).
local function getOwner(placeable)
if placeable.getOwnerFarmId ~= nil then
local ok, value = pcall(placeable.getOwnerFarmId, placeable)
if ok then owner = value end
elseif placeable.ownerFarmId ~= nil then
owner = placeable.ownerFarmId
if ok then return value end
return nil
end
if owner == nil then
return placeable.ownerFarmId
end
-- Ejeren af jorden under en placeable (nil = ukendt).
local function getLandOwner(placeable)
local manager = g_farmlandManager
if manager == nil or manager.getFarmlandIdAtWorldPosition == nil or manager.getFarmlandOwner == nil or placeable.rootNode == nil or getWorldTranslation == nil then
return nil
end
local ok, x, _, z = pcall(getWorldTranslation, placeable.rootNode)
if not ok or x == nil then return nil end
local okId, farmlandId = pcall(manager.getFarmlandIdAtWorldPosition, manager, x, z)
if not okId or farmlandId == nil then return nil end
local okOwner, owner = pcall(manager.getFarmlandOwner, manager, farmlandId)
return okOwner and owner or nil
end
-- Gårdens bygning? Ejer = farmId, ELLER et kortanlæg der følger jorden (boughtWithFarmland / ejer 15)
-- og jorden under det er gårdens — Dakotas BGA500kw står med ejer 15 selv på købt jord.
function ADPrices.isOwnedBy(placeable, farmId)
if placeable == nil then return false end
local owner = getOwner(placeable)
if owner == farmId then return true end
if placeable.boughtWithFarmland == true or owner == 15 then
return getLandOwner(placeable) == farmId
end
return false
end
-- Spillerens gård ejer placeablen; ukendt ejer = regnes som egen (afleveringer til egne anlæg er ikke salg).
function ADPrices.isOwnedByPlayer(placeable)
local farmId = g_currentMission ~= nil and g_currentMission.getFarmId ~= nil and g_currentMission:getFarmId() or 1
if getOwner(placeable) == nil then
return true
end
local farmId = g_currentMission ~= nil and g_currentMission.getFarmId ~= nil and g_currentMission:getFarmId() or 1
return owner == farmId
return ADPrices.isOwnedBy(placeable, farmId)
end
local function getCurrentPeriod()