Currently, there is semi-hardcoded dependency between city border radius and its population:
border_sq_r = borders.radius_sq_city + borders.size_effect *
pop. While in commercial Civ>=3 the radius depends on city culture (in Civ3 culture is only what we call "city history"): city claims another ring of tiles while scores 10, 100, 1000, 10000 and 20000cp. We can manage city working radius with an effect; let's introduce another one for border radius.
Code: Select all
[effect_border_100c]
type = "Border_Sq_Radius_Inc"
value = 5 ;2×2->3×3
reqs = {"type", "name", "range"
"MinCulture", 100, "City"}
Then we set borders.size_effect=0 and make certain buildings produce city history. Also, Civ3 has another system of border claiming - city owns once obtained tile normally as long as it stays (we do it by setting borders.radius_sq_city_permanent = 401) but can lose unworked tiles to a more cultured city (our rules do it by setting the parameter to 0, and our border strength is hardcoded to be (
pop + 2)^2 /
dist^2). To imitate it, we need an option like borders.steal_tiles_by_culture = TRUE/FALSE.
There is another feature in Civ3 - a factory that marks a tile as its builder's (building consumes a worker) but not in his cultural borders, it disappears as soon as some (even owner's) borders include the tile. For it, extra flags "WeakClaimer" and "ConsumesBuilder" can be introduced.