Next try I have done is starting from the starting field and add all fields that can be conquered.
function get_valuable_fields() local fields = {} local check = {} local map = wl.Game().map local sf = map.player_slots[1].starting_field -- initilaize with the region around the startign field of P1 for idx, fg in ipairs(sf:region(9)) do local index = fg.x * 1000 + fg.y fields[index] = fg check[index] = fg end local loop = true while loop do loop = false local new = {} -- checking the check region for buildcaps and add fields that can be conquered for idx, f in pairs(check) do if f:has_max_caps("big") then local radius = f:region(10) for idx, fg in ipairs(radius) do local index = fg.x * 1000 + fg.y if fields[index] == nil and check[index] == nil then -- if new fields are discovered add them to the fields table and mark them for checking next loop new[index] = fg fields[index] = fg loop = true end end elseif f:has_max_caps("medium") then local radius = f:region(8) for idx, fg in ipairs(radius) do local index = fg.x * 1000 + fg.y if fields[index] == nil and check[index] == nil then new[index] = fg fields[index] = fg loop = true end end elseif f:has_max_caps("small") then local radius = f:region(6) for idx, fg in ipairs(radius) do local index = fg.x * 1000 + fg.y if fields[index] == nil and check[index] == nil then new[index] = fg fields[index] = fg loop = true end end end end check = new end local result = {} for idx,f in pairs(fields) do table.insert(result, f) end return result end Only thing left is to adapt this for seafaring i.e. doing the same thing for all port spaces as well. Speed is still good I think. -- https://code.launchpad.net/~widelands-dev/widelands/bug-1810062-territorial-calculations/+merge/361366 Your team Widelands Developers is subscribed to branch lp:~widelands-dev/widelands/bug-1810062-territorial-calculations. _______________________________________________ Mailing list: https://launchpad.net/~widelands-dev Post to : widelands-dev@lists.launchpad.net Unsubscribe : https://launchpad.net/~widelands-dev More help : https://help.launchpad.net/ListHelp