I did several scripts for my FutureMod, based on other planets with cratered terrain without water interspersed with bands of Space passable only by spacecraft, except that in many there is an earthlike area with rivers and lakes and seas. For that I did this.
I used this right under the part about x and y wrap:
def addLakes():
iPass=1
def addRivers():
iPass=1
and this right at the end after add features
def normalizeAddRiver():
iPass=1
def normalizeRemovePeaks():
iPass=1
def normalizeAddLakes():
iPass=1
If you leave out the normalize stuff you get them generated, but only added in as an afterthought near where players start. Which you can also dictate with this
def findStartingPlot(argsList):
[playerID] = argsList
def isValid(playerID, x, y):
if x <87:
return False
if x >115:
return False
return True
return CvMapGeneratorUtil.findStartingPlot(playerID, isValid)
Of course, basing this on absolute x values is my crude but effective way for a solar system map, but more sophisticated versions are possible that determine relative position on the map, probably copyable from numerous scripts that do this sort of stuff. If you allow normalized rivers, you have to isolate the player start region with something that will prevent rivers from crawling all the way across the map, such as a sea for them to terminate in. There are more sophisticated ways to do this I'm sure, such as finding what makes rivers stop when they reach sea and having them do that for some other terrain.