Diplomacy from buildings is something we haven't really touched on yet. I think that would be a very good idea. I actually would not mind seeing both a tag that grants a flat +X diplomacy from all leaders ("We admire your wonderful achievements!" or something like that) and then another tag that reduces a particular diplomatic penalty by X (like what you are suggesting for Shwedagon Paya, but generalized to be able to affect any negative penalty). I'm not sure exactly what could benefit from this other than Shwedagon, but I think that this can be made more flexible without too much additional work.
Good ideas, both. I will whip something up in the next few days.
This has probably been brought up before, but I figure it's worth mentioning.
On Pangea maps, the Gutenberg Bible becomes an absolute must-have. Converting every single city in the world to your religion pretty much ends the game right there.
The Holy City generates 100+ gold per turn if you build the religious wonder with a Great Prophet. Everyone converts to my religion and suddenly loves me (and each other). The game becomes a breeze after that; only a fool could even come close to losing at that point.
Maybe cap the number of cities that the Gutenberg Bible converts?
Sounds good.
Also I noticed that it became impossible to build a carpenter's guild if you're able to build cannon foundries and don't have 8 siege workshops built by then.
The reason being that Cannon Foundries make Siege Workshops Obsolete.
Maybe have Cannon Foundries also count towards the required 8 count for the Carpenter's Guild?
if iBuildingType == gc.getInfoTypeForString( 'BUILDING_GUTENBERG' ):
iPlayer = pCity.getOwner()
pPlayer = gc.getPlayer(iPlayer)
player = PyPlayer(iPlayer)
eStateReligion = player.getStateReligion()
[COLOR="Blue"] iStepper = 0[/COLOR]
for iPlayerX in range(gc.getMAX_CIV_PLAYERS()):
pPlayerX = gc.getPlayer(iPlayerX)
if pPlayerX.isAlive() and pPlayerX.isBarbarian() == False:
if pPlayerX.isNoNonStateReligionSpread() != True or pPlayerX.getStateReligion() == pPlayer.getStateReligion():
playerX = PyPlayer(iPlayerX)
cityList = playerX.getCityList()
for city in cityList:
pRelCity = pPlayerX.getCity(city.getID())
if pRelCity.isConnectedTo(pCity) == True and pRelCity.isHasReligion(eStateReligion) == 0[COLOR="Blue"] and (iStepper == 0 or iPlayerX == iPlayer)[/COLOR]:
pRelCity.setHasReligion(eStateReligion, True, True, True)
[COLOR="Blue"] iStepper = iStepper + 1
if iStepper >= 4:
iStepper = 0[/COLOR]
Sounds very good to me, go for it!I think the way to best control Gutenberg Bible is to have it spread the state religion that triggers it to all cities of the Bible's owner (which I don't think is over-powerful) and use a stepping variable so that it only spreads to a particular fraction of cities that the owner doesn't control. I think 1/4th is pretty good, but we can adjust it if necessary.
I worked up the code changes, and this worked the first time I tested it. Let me know if you see any other issues. (New code is in blue.)
Code:if iBuildingType == gc.getInfoTypeForString( 'BUILDING_GUTENBERG' ): iPlayer = pCity.getOwner() pPlayer = gc.getPlayer(iPlayer) player = PyPlayer(iPlayer) eStateReligion = player.getStateReligion() [COLOR="Blue"]iStepper = 0[/COLOR] for iPlayerX in range(gc.getMAX_CIV_PLAYERS()): pPlayerX = gc.getPlayer(iPlayerX) if pPlayerX.isAlive() and pPlayerX.isBarbarian() == False: if pPlayerX.isNoNonStateReligionSpread() != True or pPlayerX.getStateReligion() == pPlayer.getStateReligion(): playerX = PyPlayer(iPlayerX) cityList = playerX.getCityList() for city in cityList: pRelCity = pPlayerX.getCity(city.getID()) if pRelCity.isConnectedTo(pCity) == True and pRelCity.isHasReligion(eStateReligion) == 0[COLOR="Blue"] and (iStepper == 0 or iPlayerX == iPlayer)[/COLOR]: pRelCity.setHasReligion(eStateReligion, True, True, True) [COLOR="Blue"]iStepper = iStepper + 1 if iStepper >= 4: iStepper = 0[/COLOR]
I think the way to best control Gutenberg Bible is to have it spread the state religion that triggers it to all cities of the Bible's owner (which I don't think is over-powerful) and use a stepping variable so that it only spreads to a particular fraction of cities that the owner doesn't control. I think 1/4th is pretty good, but we can adjust it if necessary.
Regarding the Gutenberg Bible Solution:
Yes that sounds reasonable. Maybe also full spread to vassals as well.
By the way, the Gutenberg Bible spreads to cities that are connectable, even if they haven't been explored yet. I triple checked this and it is the case, though it won't spread to civs you haven't discovered yet.
Since it only checks every 4th city, if every 4th city has the religion, while the other 75% do not have the religion, the code won't spread to any of the cities of the target player at all. The effect can be much less than expected.
for city in cityList:
pRelCity = pPlayerX.getCity(city.getID())
if pRelCity.isHasReligion(eStateReligion) == 0:
if pRelCity.isConnectedTo(pCity) == True and (iStepper == 0 or iPlayerX == iPlayer or gc.getTeam(pPlayerX.getTeam()).isVassal(gc.pPlayer.getTeam())):
pRelCity.setHasReligion(eStateReligion, True, True, True)
iStepper = iStepper + 1
if iStepper >= 4:
iStepper = 0
The Golden spike wonder -
Do you consider this wonder a bit weak, it only gives a 'Trans Contentinental' railroad.
Which in my case was only from East to West of my Continent, even though I had settled it fully North to South. (6x longer)
Is giving a railway connection to every city too much, too much demand on systems, or not how it's intended.
My opinion, is it should give evey continental city a Railway connection to the next closest city.
if iBuildingType == gc.getInfoTypeForString( 'BUILDING_GUTENBERG' ):
iPlayer = pCity.getOwner()
pPlayer = gc.getPlayer(iPlayer)
player = PyPlayer(iPlayer)
pTeam = gc.getTeam(pPlayer.getTeam())
eStateReligion = player.getStateReligion()
iStepper = 0
for iPlayerX in range(gc.getMAX_CIV_PLAYERS()):
pPlayerX = gc.getPlayer(iPlayerX)
if pPlayerX.isAlive() and pPlayerX.isBarbarian() == False:
if pPlayerX.isNoNonStateReligionSpread() != True or pPlayerX.getStateReligion() == pPlayer.getStateReligion():
playerX = PyPlayer(iPlayerX)
pTeamX = gc.getTeam(pPlayerX.getTeam())
cityList = playerX.getCityList()
for city in cityList:
pRelCity = pPlayerX.getCity(city.getID())
if pRelCity.isHasReligion(eStateReligion) == 0:
if pRelCity.isConnectedTo(pCity) == True:
if (iStepper == 0) or (iPlayerX == iPlayer) or (pTeamX.isVassal(pTeam)):
pRelCity.setHasReligion(eStateReligion, True, True, True)
iStepper = iStepper + 1
if iStepper > 3:
iStepper = 0