Religious Wonders?

Maybe this is a bit much, but I would love to see all religious wonders, including shrines, only working if their state religion is active. For instance, Kotoku-in would only work if buddhism was active.

I say this because if a player gets a significant tech lead and is able to found and spread multiple religions, then their wonder power is much higher than another player left in the dust. For instance, if I found Hellenism and Judaism, I can build all the wonders for those. Adding in Angkor Wat, my priests now do 5:hammers: 2:commerce: 2:gold:. That's ridiculously powerful, turning my empire into a scientific commercial industrial powerhouse that no civ could ever match.

By restricting religious wonder stacking, it would encourage the player to stick with one or two religions tops.

The religions are designed to be like civics in many ways, you choose the one that suits your needs as needs change. ;)

Zoroastrian Tower Of Silence: Priesthood
Pir-e Naraki: Sanitation, Siege Warfare, Aesthetics
Seti Pir: Siege Warfare, Feudalism, Aesthetics
Behistun Inscription: Code Of Laws, Aesthetics

I posted this a few posts above, after I realized I forgot to specify tech requirements for these wonders. Seti Pir and Behistun Inscription would be a wee bit on the unbalanced side if all you needed to create them would be Dualism.

What are the other buildings on the graveyard tree? I must admit I rarely build this building unless a given city is suffering health or happiness issues.

Thanks. I think the graveyard only leads to ancient and modern embalmers which give a small money boost.
 
Maybe this is a bit much, but I would love to see all religious wonders, including shrines, only working if their state religion is active. For instance, Kotoku-in would only work if buddhism was active.

I think I may finally figured out how to do this. Don't quite me but if it works with these new Zoroastrianism buildings I may get to do the others as well. There are three tags StateReligion, bStateReligion and PrereqReligion which control when a religion affects the building.
 
@Hydromancerx, is it possible for a building (wonder) to change the commerce on all of another building in the Nation? ie wonder gives +4 espionage on all courthouses?
 
@Hydromancerx, is it possible for a building (wonder) to change the commerce on all of another building in the Nation? ie wonder gives +4 espionage on all courthouses?

If not directly, then it could at least indirectly by providing a free building to all cities that thehad the commerce modifier.
 
If not directly, then it could at least indirectly by providing a free building to all cities that thehad the commerce modifier.

This is one of the XML tags that I've asked for (and really, really want). I know that World of Legends used an event to have the Scarborough Fair wonder grant +2 culture to Markets and Grocers.
 
@hotrodlincoln I can see how to give +2:health: to all state religion buildings. Do you know of another building that does this? As far as I can see you can do :food:, :commerce:, :science: and :espionage: only.

Same for the -Civic Upkeep.
 
@hotrodlincoln This is as far as I have gotten. Please test it and tell me if it does what you require. I still have not figured out how to do those last to things I asked about.

It has modifications to my, Hydro's and Tsentom1's buildings.
 
@Hydromancerx, is it possible for a building (wonder) to change the commerce on all of another building in the Nation? ie wonder gives +4 espionage on all courthouses?

Yes via python. Done it with 2 wonders, Bolshoi and Porcelain
 
I am testing as we speak, I will write down things I notice as I go along.

Firstly, The Tower Of Silence button shows up with that wierd border. This is my fault, I will see if I can't fix it, but I unfortunately do not know why it is doing that. I applied the same alpha channel to that one as I did the other buttons, and the rest seem to be showing up fine.

Behistun Inscription is lacking the -50% civic upkeep reduction, as well as the decrease to national rebelliousness. I assume that these could not be coded in? Also, the +1 happiness per city isn't working, it's granting +3 happiness to the city it was built in, but no others.

Pir-e Naraki is granting a health bonus per city rather than a health bonus per state religion buildings. As you mentioned this is not easy to do, then this seems like a fine alternative. Building is working just as intended.

Seti Pir seems to be working just fine as well.

Zoroastrianism still has Nimrud Palace, Hammurabi's Stele Of Laws and Ishtar Gate as religion wonders. I assume you didn't mess with that part of the code?

Edit: Suggestions: So far as the mausoleum and embalmer buildings are concerned, all of them grant relatively minor bonuses so I don't see it as being a huge nerf for Zoroastrianism to lose access to them. The Tower Of Silence is better than a normal graveyard so it's not as though they lag completely behind. Behistun Inscription, by the looks of it will need to be completely redone, won't it?
 
Yes via python. Done it with 2 wonders, Bolshoi and Porcelain

Be aware that anything like this done in Python wil be LOST on the next modifier rebuild, because it doesn't have a source that can be seen by the rebuild. That is why tag-based methods are strongly to be preferred, and tag-requests where needed will be fulfilled. Essentially any Python from onConstructed callbacks that makes persistent modifications to modifiers does not survive an modifier rebuild.

The modifier recalc cannot re-invoke the Pythin because then one-off effects would get repeated, so we'd need to add new onRecalc callbacks to address this. Since we are trying to move away from Python to tag-based functionality wherever we can (for performance reasons), it's better to just migrate to DLL-implemented-tag-defined methods where possible.

Can you clarify exactly what the Bolshoi and Porcelain wonders do that requires this, and we'll brainstorm the necessary tags...
 
Bolshoi adds 2 culture to each theatre.
Porcelain doubles effects of each temple.

no callbacks required.
Just some simple codes onbuildingbuilt (when the wonder is built)
and extra codes for new cities built, cities acquired (when wonder changes hands as well as apply the effects to new cities) and city razed (when wonder razed)
 
Bolshoi adds 2 culture to each theatre.
Porcelain doubles effects of each temple.

no callbacks required.
Just some simple codes onbuildingbuilt (when the wonder is built)
and extra codes for new cities built, cities acquired (when wonder changes hands as well as apply the effects to new cities) and city razed (when wonder razed)

Modifier recalc works liek this:

  1. 0 all modifiers and other attributes that can be provided by buildings, civics, projects, events, traits, techs
  2. Reapply traits, civics, etc.
  3. Reprocess the effects from all buildings - onBuildingBuilt() is NOT re-called in this process (because to do so would arbitrarily redo one-off factors such as spawning units or whatever)
  4. Reprocess the effects of all techs known (but don't re-call onTechAcquired())

So any code in onBuildingBuilt that makes changes to production or commerce (or whatever) modifiers will have its effects lost on modifier recalc.

I can't seem to find any Python for these two Wonders however - can you point me at it so I can check exactly what it is doing please. I would have assumed it was in PlatypingWonders.py but I can't see any code in there for these two Wonders.
 
Those 2 aren't included in C2C mod.
You can get them from my thread though.
Bolshoi is easier wonder since it only adds 2 culture to theatres in all cities.
Porcelain on the other hand adds both culture and happiness, and apply to temples of all religions, so slightly more stuff to do

When I make my wonders, I make them working based on default BTS engine.
Thus, I didn't consider any modfications due to BUG or other mods, or modifier recalc thing, since I don't have any of those anyway.
Thus, some codes have to be remodified to be compatible.

Edit:
Since you said onBuildingBuilt effects are all wiped when this modifer recalc thing happens, you may want to check those python wonders already added to C2C mod since some are using that.
Examples:
Nazca Lines, EmpireStateBuilding

1 question I was thinking when I looked through Great Bath codes:
Code:
def onCityLost( argsList):
	'City Lost'
	city = argsList[0]
	player = PyPlayer(city.getOwner())

## Great Bath Start #
	global gi_GreatBath, gi_RainWaterBasin, gb_GreatBathBuilt, gi_GreatBathBuiltBy, gi_GreatBathObsoleteTech

	iX = city.getX()
	iY = city.getY()
	pPlot = CyMap().plot(iX +0, iY +0)

	if ( pPlot.getFeatureType() == gi_RainWaterBasin):
		pPlot.setFeatureType(-1, 0)

## Great Bath End #
Am I right to say, when a city with GB wonder is lost, the Basin Feature is removed?
Shouldn't the basin be kept instead?
 
Those 2 aren't included in C2C mod.
You can get them from my thread though.
Bolshoi is easier wonder since it only adds 2 culture to theatres in all cities.
Porcelain on the other hand adds both culture and happiness, and apply to temples of all religions, so slightly more stuff to do

When I make my wonders, I make them working based on default BTS engine.
Thus, I didn't consider any modfications due to BUG or other mods, or modifier recalc thing, since I don't have any of those anyway.
Thus, some codes have to be remodified to be compatible.

Edit:
Since you said onBuildingBuilt effects are all wiped when this modifer recalc thing happens, you may want to check those python wonders already added to C2C mod since some are using that.
Examples:
Nazca Lines, EmpireStateBuilding

1 question I was thinking when I looked through Great Bath codes:
Code:
def onCityLost( argsList):
	'City Lost'
	city = argsList[0]
	player = PyPlayer(city.getOwner())

## Great Bath Start #
	global gi_GreatBath, gi_RainWaterBasin, gb_GreatBathBuilt, gi_GreatBathBuiltBy, gi_GreatBathObsoleteTech

	iX = city.getX()
	iY = city.getY()
	pPlot = CyMap().plot(iX +0, iY +0)

	if ( pPlot.getFeatureType() == gi_RainWaterBasin):
		pPlot.setFeatureType(-1, 0)

## Great Bath End #
Am I right to say, when a city with GB wonder is lost, the Basin Feature is removed?
Shouldn't the basin be kept instead?

Those are fine since they are one-off effects, not modifiers. Changes to plots, creation of units, chnages to treasury balances or one off gifts of research/culture/whatever will all be fine. It's just modifiers that are problematic.
 
Nazca Lines modify the effects of the wonder itself.
Empire State Building modify the city itself.

If Nazca Lines work, then Bolshoi will definitely work. They work on the same principles

Elaborated explanation on how they work:
Nazca gives a random modification to the wonder itself, in just the wonder city
Bolshoi gives a fixed modification to theatres, in all cities.
However, strictly speaking, the modifications are done to the cities, not to the buildings.

Thus, if you tested Nazca with this modifier recalc thingy and it still works, then no reason for Bolshoi to fail
 
Nazca Lines modify the effects of the wonder itself.
Empire State Building modify the city itself.

If Nazca Lines work, then Bolshoi will definitely work. They work on the same principles

Elaborated explanation on how they work:
Nazca gives a random modification to the wonder itself, in just the wonder city
Bolshoi gives a fixed modification to theatres, in all cities.
However, strictly speaking, the modifications are done to the cities, not to the buildings.

Thus, if you tested Nazca with this modifier recalc thingy and it still works, then no reason for Bolshoi to fail

I haven't, and sadly they likely don't as things stand. Fixed modification stuff can readily enough be handled by creating a suitable new tag (which would be reprocesed on recalc). Random modification is a bit more tricky - doesn't lend itself really to a tag as such. I think we'd need to add an onRecalc() callback for buildings which we call on each reprocessing of a building, so that Python has a chance to reapply stuff it deems necessary then. Even then though, you'd have the issue that it would generate a different random number on each recalculation, which really boils down to the fact that the original onBuildingBuilt() code has nowhere to persist intermediary values such as this random number, and thus make the action replayable.
 
Back
Top Bottom