You can write your own "plot finder" function if you want to. And you can shift a unit using Unit:SetXY(args). You either scan the whole map every time you want to do this, or scan within a radius using William Howard's plot iterators, or you scan the map at game load and store the plot ID#s and thier XY locations of all map tiles that are also land tiles. You could also organize your data by map area ID#s which will allow you to only look at plots on the same continent, for example, or plots within the same water "area". Whichever method you decide to use for "getting" all the possible plots, you then look for the closest (for example) plot that does not already have a unit, whose owner conforms to your requirements, and which is on the same continent (ie, map area) as the Unit's starting point. Then you just shift the unit to the desired plot using Unit:SetXY(args). But if you want to have this process happen fast as possible you would need to make a new DLL. Assuming yuou aren't doing all this stuff multiple times a turn during the human's turn while they are moving their units around, it shouldn't really be too terrible in time even if you do a lot of this on the same turn and use lua to do it.