Spearthrower
Thrower of spears
Honestly - I remember the same points and posts being made 10 years ago for Civ 2!! ![Big Grin :D :D](https://civfanatics-data.community.forum/assets/smilies/biggrin.gif)
History repeating itself!![lol :lol: :lol:](https://civfanatics-data.community.forum/assets/smilies/lol.gif)
![Big Grin :D :D](https://civfanatics-data.community.forum/assets/smilies/biggrin.gif)
History repeating itself!
![lol :lol: :lol:](https://civfanatics-data.community.forum/assets/smilies/lol.gif)
OK, think of it this way:
Every civ has a turn in 4000BC. Your turn is January, then another civ is February, March, etc.
Then every civ has a turn in (say) 3970 BC. Again, you're in January, etc.
Which is not fair, and misleading, in SIMULTANEOUS turns mode.
This isn't simultaneous turns. You know that wait after your turn thats says "Waiting For Other Civs"? That's you not taking turns simultaneously.
![]()
You and I are playing different games sir!![]()
That's most definitely not how it works on my computer.... nor for what I know, on anyone elses!Perhaps you are playing a simultaneous turn version?
Either that or your explanation isn't clear..... bit confused here!!![]()
![]()
I play the very normal version of BTS, but it has been like this forever.
Maybe because i generally multiplay with a friend of mine?
Chances are, that 2 humans who ARE taking simultaneous turns are disrupting the natural turn order.
But i can say, 100% sure, that the above happens 100% of the time.
Inky said:So for things like Wonders and Techs which give unique benefits, whoever has the most extra production for the thing wins the race.
I could be wrong, but it would be obviously more fair if it worked like this.
if (isMPOption(MPOPTION_SIMULTANEOUS_TURNS))
{
shuffleArray(aiShuffle, MAX_PLAYERS, getSorenRand());
for (iI = 0; iI < MAX_PLAYERS; iI++)
{
iLoopPlayer = aiShuffle[iI];
if (GET_PLAYER((PlayerTypes)iLoopPlayer).isAlive())
{
GET_PLAYER((PlayerTypes)iLoopPlayer).setTurnActive(true);
}
}
}
void CvGame::doHolyCity()
{
PlayerTypes eBestPlayer;
TeamTypes eBestTeam;
long lResult;
int iValue;
int iBestValue;
int iI, iJ, iK;
lResult = 0;
gDLL->getPythonIFace()->callFunction(PYGameModule, "doHolyCity", NULL, &lResult);
if (lResult == 1)
{
return;
}
if (getElapsedGameTurns() < 5 && !isOption(GAMEOPTION_ADVANCED_START))
{
return;
}
int iRandOffset = getSorenRandNum(GC.getNumReligionInfos(), "Holy City religion offset");
for (int iLoop = 0; iLoop < GC.getNumReligionInfos(); ++iLoop)
{
iI = ((iLoop + iRandOffset) % GC.getNumReligionInfos());
if (!isReligionSlotTaken((ReligionTypes)iI))
{
iBestValue = MAX_INT;
eBestTeam = NO_TEAM;
for (iJ = 0; iJ < MAX_TEAMS; iJ++)
{
if (GET_TEAM((TeamTypes)iJ).isAlive())
{
if (GET_TEAM((TeamTypes)iJ).isHasTech((TechTypes)(GC.getReligionInfo((ReligionTypes)iI).getTechPrereq())))
{
if (GET_TEAM((TeamTypes)iJ).getNumCities() > 0)
{
iValue = getSorenRandNum(10, "Found Religion (Team)");
for (iK = 0; iK < GC.getNumReligionInfos(); iK++)
{
int iReligionCount = GET_TEAM((TeamTypes)iJ).getHasReligionCount((ReligionTypes)iK);
if (iReligionCount > 0)
{
iValue += iReligionCount * 20;
}
}
if (iValue < iBestValue)
{
iBestValue = iValue;
eBestTeam = ((TeamTypes)iJ);
}
}
}
}
}
if (eBestTeam != NO_TEAM)
{
iBestValue = MAX_INT;
eBestPlayer = NO_PLAYER;
for (iJ = 0; iJ < MAX_PLAYERS; iJ++)
{
if (GET_PLAYER((PlayerTypes)iJ).isAlive())
{
if (GET_PLAYER((PlayerTypes)iJ).getTeam() == eBestTeam)
{
if (GET_PLAYER((PlayerTypes)iJ).getNumCities() > 0)
{
iValue = getSorenRandNum(10, "Found Religion (Player)");
if (!(GET_PLAYER((PlayerTypes)iJ).isHuman()))
{
iValue += 10;
}
for (iK = 0; iK < GC.getNumReligionInfos(); iK++)
{
int iReligionCount = GET_PLAYER((PlayerTypes)iJ).getHasReligionCount((ReligionTypes)iK);
if (iReligionCount > 0)
{
iValue += iReligionCount * 20;
}
}
if (iValue < iBestValue)
{
iBestValue = iValue;
eBestPlayer = ((PlayerTypes)iJ);
}
}
}
}
}
if (eBestPlayer != NO_PLAYER)
{
ReligionTypes eReligion = (ReligionTypes)iI;
if (isOption(GAMEOPTION_PICK_RELIGION))
{
eReligion = GET_PLAYER(eBestPlayer).AI_chooseReligion();
}
if (NO_RELIGION != eReligion)
{
GET_PLAYER(eBestPlayer).foundReligion(eReligion, (ReligionTypes)iI, false);
}
}
}
}
}
}
Each player, who discover required technology gets random number of points from 1 to 10.Code:void CvGame::doHolyCity() iValue = getSorenRandNum(10, "Found Religion (Team)"); if (iReligionCount > 0) { iValue += iReligionCount * 20; } if (!(GET_PLAYER((PlayerTypes)iJ).isHuman())) { iValue += 10; }
That would be it.