Vokarya's Workshop: Wonders

I agree with your ideas, Vokarya, and I tend to agree with Ipex as well. The Golden Spike was rather underwhelming for me too.
 
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.

I have started working on this. I am adding 2 new tags:

<iDiplomacyChange> - which is a diplomatic relation affect that the building has with all leaders.
<MemoryTypeDiplomacyModifier> - which is a modifier (percentage) that modifies how all leaders view memory types. It's a list and can modify multiple memory types.

So this opens up interesting possibilities. Buildings could make allies like your same state religion 50% more. Or hate declaring war on their friend 50% less. Or hate you more.
 
I've never liked the placement of the Palace of Potala wonder at Education. The Palace was historically built in 1645 (Renaissance Era, not Medieval) and was a seat of government, not learning. Education is also one of the true bottleneck technologies of the Tech Tree (everything Renaissance and later goes through it) and has a trick count of 5 without Potala, so it wouldn't miss losing anything.

I'm going to move Potala to Divine Right instead. This also fixes a little of the Wonder imbalance between the eras; without Shrines or Guilds, the Medieval Era has 23 Wonders to the Renaissance's 19.
 
I have an idea for what we can do with Neuschwanstein in place of a Golden Age. I would like to give it two things:
  • +25% Golden Age Length
  • +25% global Great Person generation

We are not using either of these abilities very frequently. For Golden Age length, the other sources are:
  • +50% from Mausoleum of Maussollos
  • +20% from Cheomseongdae
  • +25% from World News Network
  • +100% from Ascension Gate
I don't think it would be very easy to get all of these sources, so adding an additional +25% won't break anything. If necessary, we can put an expiration date on the Mausoleum.

Likewise, global Great Person generation is another ability that we are not using very much.
  • +50% from Parthenon, which is Hellenism-only
  • +20% from Leaning Tower
  • +10% from National TV Station
  • +3% from Network Node
So I think +25% is worth testing, especially since Parthenon is already obsolete before Neuschwanstein appears.
 
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?
 
I like that idea, Vokarya. It might not have done anything for Ludwig II, but I'm sure the players will appreciate it. :)
 
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?

I'm thinking about reining it in a little. I have an idea, but I have to sit down and write up the code.
 
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?
 
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?

As far as I know, Afforess made it so that building upgrades count as the building they are upgrading for purposes of requirement (specifically to fix Circus Maximus and its Stables requirement getting superseded by Knight's Stables). If you really can't build Carpenter's Guild with the required amount of Siege Weapons Workshops and Cannon Forges, then post a save game in one of the bug threads.
 
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.

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]
Sounds very good to me, go for it!
 
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.
 
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.

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.
 
Regarding the Gutenberg Bible Solution:

Yes that sounds reasonable. Maybe also full spread to vassals as well.

That's fair. I'll include that.

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.

That's okay with me. The idea here is that mass-produced Bibles get into the trade network somehow and circulate from there, taking advantage of everyone's internal connections, but you need an initial connection to get the Bibles out there.
 
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.

I think if we rearrange the tests a little by checking for the absence of the target religion first, and only incrementing the iStepper value if the city doesn't have the religion, then we will get the proper number. The iStepper increase is inside the isHasReligion test but outside the isConnectedTo and iStepper tests. Like this:
Code:
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
 
Two religious wonder ideas, just regular brain-storming :)

1) Council of Nicaea for Christianity (maybe it could be a national wonder)
Effect:
-free christian temple in every city

Some/many players feel that Christianity spreads too slowly, but this would be a solution for this.

2) The other one is for Islam, though I have no name for it.
Effect:
-every time the civ conquer or found a new city, Islam spreads to a connected city

Reason same as above.
 
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.

I can replace Golden Spike's route-building code with Via Appia's. VA builds a road network connecting all cities on the same continent. Would that be better?
 
I'm currently testing the fixed code for Gutenberg Bible (spread the key religion to all cities owned or vassalized, plus 1/4 of the cities owned by connected rivals) and I'm getting an onBuildingBuilt error in the event handler that I can't seem to figure out why it's triggering.

Here's my current code for Gutenberg:
Code:
	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

The problem line is apparently iStepper = iStepper +1 (third line from the end). If I comment out that line, the target religion spreads to every visible city (which I understand, because then iStepper never increases and is always 0). Without it, the religion spreads to all my cities and the first AI city in turn order, then the error message and no further spread. I believe the indentation is right for what I want; the iStepper increase is only supposed to happen if the city does not already have the target religion.

I've attached a save game that I've been using for tests. It's set up to build GB as soon as the turn ends. You have to rename the mod Rise of Mankind - V Work for the save to load properly.
 
Top Bottom