Gothic_Empire
AKA, Ramen Empire
- Joined
- Aug 5, 2008
- Messages
- 1,502
Closed borders and mercantilism should keep religions out of your cities.
Closed borders and mercantilism will keep religions out of your cities.
It won't. At all. It will still auto spread, just won't come via missionaries.
One could surround a city with peaks and make sure that city gets all 7 holy shrines. That would completely eliminated religion from the world most likely.
It won't. At all. It will still auto spread, just won't come via missionaries.
One could surround a city with peaks and make sure that city gets all 7 holy shrines. That would completely eliminated religion from the world most likely.
Quoting myself.....All it takes is being isolated, adopting theocracy without researching theology first, and being lucky enough not to get religion spread via random events.
It's not that extreme, but you'll probably need to play a difficulty level or two lower than usual.
RELIGIONLESS THEOCRACY DOES NOT PREVENT RELIGIOUS AUTO-SPREADNo. Atheist Theocracy does not prevent religion autospread since Warlords.This was made to prevent that theo lover AI ( Izzy, Ramesses,.... ) that by acident didn't founded a religion would never get one.
Religion autospread is only possible if there is a possible trade route from a holy city to the target city ( that is not the same than a actual trade route: closed borders will not prevent autospread... and it does not work both ways: religion will not spread if there is only a possible trade route from the target city to the holy city ). See the VoiceOfUnreason article on religions for more details
So, on topic...
There is only one way to have a full-proof atheistic empire:
-Go to WB in beginning of the game and give yourself Theocracy and a religion. Get back to WB and clean the religion of every city on Earth. That will enable to have a religion Theocracy, but without the religion.
P.S With events off as well, as Tatran said
Quoting myself.....
RELIGIONLESS THEOCRACY DOES NOT PREVENT RELIGIOUS AUTO-SPREAD
Theocracy
Complicating things further, the Theocracy civic is documented to "prevent the spread of non-state religions. Once again, this doesn't quite mean what it says.
For spontaneous spreading, this is precisely right; your state religion is allowed to flow to one of your unconverted cities (if it is connected to the holy city), but no other religions may do so.
For missionary spreading, you prevent your opponents from spreading non-state religions to you, but you don't prevent your teammates from doing so. You can always spread the religion yourself with your own missionaries, and your opponents can use their missionaries to spread your own state religion to you.
To be continued
void CvCity::doReligion()
{
CvCity* pLoopCity;
int iRandThreshold;
int iSpread;
int iLoop;
int iI, iJ;
CyCity* pyCity = new CyCity(this);
CyArgsList argsList;
argsList.add(gDLL->getPythonIFace()->makePythonObject(pyCity)); // pass in city class
long lResult=0;
gDLL->getPythonIFace()->callFunction(PYGameModule, "doReligion", argsList.makeFunctionArgs(), &lResult);
delete pyCity; // python fxn must not hold on to this pointer
if (lResult == 1)
{
return;
}
if (getReligionCount() == 0)
{
for (iI = 0; iI < GC.getNumReligionInfos(); iI++)
{
if (!isHasReligion((ReligionTypes)iI))
{
if ((iI == GET_PLAYER(getOwnerINLINE()).getStateReligion()) || !(GET_PLAYER(getOwnerINLINE()).isNoNonStateReligionSpread()))
{
iRandThreshold = 0;
for (iJ = 0; iJ < MAX_PLAYERS; iJ++)
{
if (GET_PLAYER((PlayerTypes)iJ).isAlive())
{
for (pLoopCity = GET_PLAYER((PlayerTypes)iJ).firstCity(&iLoop); pLoopCity != NULL; pLoopCity = GET_PLAYER((PlayerTypes)iJ).nextCity(&iLoop))
{
if (pLoopCity->isConnectedTo(this))
{
iSpread = pLoopCity->getReligionInfluence((ReligionTypes)iI);
iSpread *= GC.getReligionInfo((ReligionTypes)iI).getSpreadFactor();
if (iSpread > 0)
{
iSpread /= std::max(1, (((GC.getDefineINT("RELIGION_SPREAD_DISTANCE_DIVISOR") * plotDistance(getX_INLINE(), getY_INLINE(), pLoopCity->getX_INLINE(), pLoopCity->getY_INLINE())) / GC.getMapINLINE().maxPlotDistance()) - 5));
//iSpread /= (getReligionCount() + 1);
iRandThreshold = std::max(iRandThreshold, iSpread);
}
}
}
}
}
if (GC.getGameINLINE().getSorenRandNum(GC.getDefineINT("RELIGION_SPREAD_RAND"), "Religion Spread") < iRandThreshold)
{
setHasReligion(((ReligionTypes)iI), true, true, true);
break;
}
}
}
}
}
}
The revelant code is on CvCity:doReligion
Code:void CvCity::doReligion() { CvCity* pLoopCity; int iRandThreshold; int iSpread; int iLoop; int iI, iJ; CyCity* pyCity = new CyCity(this); CyArgsList argsList; argsList.add(gDLL->getPythonIFace()->makePythonObject(pyCity)); // pass in city class long lResult=0; gDLL->getPythonIFace()->callFunction(PYGameModule, "doReligion", argsList.makeFunctionArgs(), &lResult); delete pyCity; // python fxn must not hold on to this pointer if (lResult == 1) { return; } if (getReligionCount() == 0) { for (iI = 0; iI < GC.getNumReligionInfos(); iI++) { if (!isHasReligion((ReligionTypes)iI)) { if ((iI == GET_PLAYER(getOwnerINLINE()).getStateReligion()) || !(GET_PLAYER(getOwnerINLINE()).isNoNonStateReligionSpread())) { iRandThreshold = 0; for (iJ = 0; iJ < MAX_PLAYERS; iJ++) { if (GET_PLAYER((PlayerTypes)iJ).isAlive()) { for (pLoopCity = GET_PLAYER((PlayerTypes)iJ).firstCity(&iLoop); pLoopCity != NULL; pLoopCity = GET_PLAYER((PlayerTypes)iJ).nextCity(&iLoop)) { if (pLoopCity->isConnectedTo(this)) { iSpread = pLoopCity->getReligionInfluence((ReligionTypes)iI); iSpread *= GC.getReligionInfo((ReligionTypes)iI).getSpreadFactor(); if (iSpread > 0) { iSpread /= std::max(1, (((GC.getDefineINT("RELIGION_SPREAD_DISTANCE_DIVISOR") * plotDistance(getX_INLINE(), getY_INLINE(), pLoopCity->getX_INLINE(), pLoopCity->getY_INLINE())) / GC.getMapINLINE().maxPlotDistance()) - 5)); //iSpread /= (getReligionCount() + 1); iRandThreshold = std::max(iRandThreshold, iSpread); } } } } } if (GC.getGameINLINE().getSorenRandNum(GC.getDefineINT("RELIGION_SPREAD_RAND"), "Religion Spread") < iRandThreshold) { setHasReligion(((ReligionTypes)iI), true, true, true); break; } } } } } }