Gort
Emperor
- Joined
- Nov 7, 2010
- Messages
- 1,518
Hours played of Gods and Kings 257. Hours of Brave New World 20-30. I think that speaks for itself.
Yeah. It says, "Gods and Kings has been out considerably longer than Brave New World".
Hours played of Gods and Kings 257. Hours of Brave New World 20-30. I think that speaks for itself.
I had a larger army than everyone in the world combined as Venice. It didn't even dent my income, pocket change.
Disable diplo victory or increase difficulty. Or put Greece and Siam into the game.
// --------------------------------------------------------------------------------
/// Update diplo victory parameters, such as how many votes are needed to win
void CvGame::DoUpdateDiploVictory()
{
int iVotesForHost = 1;
int iVotesPerCiv = 1;
int iVotesPerCityState = 1;
for (int i = 0; i < GC.getNumLeagueSpecialSessionInfos(); i++)
{
LeagueSpecialSessionTypes e = (LeagueSpecialSessionTypes)i;
CvLeagueSpecialSessionEntry* pInfo = GC.getLeagueSpecialSessionInfo(e);
CvAssert(pInfo != NULL);
if (pInfo != NULL)
{
if (pInfo->IsUnitedNations())
{
iVotesForHost = pInfo->GetHostDelegates();
iVotesPerCiv = pInfo->GetCivDelegates();
iVotesPerCityState = pInfo->GetCityStateDelegates();
}
}
}
float fCivsToCount = 0.0f;
float fCityStatesToCount = 0.0f;
for (uint i = 0; i < MAX_CIV_PLAYERS; i++)
{
PlayerTypes e = (PlayerTypes)i;
CvPlayer* pPlayer = &GET_PLAYER(e);
if (pPlayer != NULL && pPlayer->isEverAlive())
{
// Minor civ
if (pPlayer->isMinorCiv())
{
// Bought out does not count (they are no longer in the pool of teams, cannot be liberated, etc.)
if (!pPlayer->GetMinorCivAI()->IsBoughtOut())
{
if (pPlayer->isAlive())
{
fCityStatesToCount += 1.0f;
}
else
{
fCityStatesToCount += 0.5f;
}
}
}
// Major civ
else
{
if (pPlayer->isAlive())
{
fCivsToCount += 1.0f;
}
else
{
fCivsToCount += 0.5f;
}
}
}
}
// Number of delegates needed to win increases the more civs and city-states there are in the game,
// but these two scale differently since civs' delegates are harder to secure. These functions
// are based on a logarithmic regression, with a standard map (8 civs, 16 CS) requiring half of
// the base delegates plus one.
float fCivVotesPortion = (0.798f * (float)log(fCivsToCount)) + 5.447f;
if (fCivVotesPortion < 0.0f)
{
fCivVotesPortion = 0.0f;
}
float fCityStateVotesPortion = (12.984f * (float)log(fCityStatesToCount)) - 10.0f;
if (fCityStateVotesPortion < 0.0f)
{
fCityStateVotesPortion = 0.0f;
}
int iVotesToWin = (int)floor(fCivVotesPortion + fCityStateVotesPortion);
iVotesToWin = MAX(iVotesForHost + iVotesPerCiv + 1, iVotesToWin);
SetVotesNeededForDiploVictory(iVotesToWin);
GC.GetEngineUserInterface()->setDirty(LeagueScreen_DIRTY_BIT, true);
}
iVotesToWin = MAX(iVotesForHost + iVotesPerCiv + 1, iVotesToWin);
iVotesToWin = MAX( (iVotesForHost + iVotesPerCiv*fCivsToCount + iVotesPerCityState*fCityStatesToCount) * 0.67 + 1, iVotesToWin);
I had a larger army than everyone in the world combined as Venice. It didn't even dent my income, pocket change.
... they came up with a crazy log formula to emulate a standard simple majority definition (half plus one delegates in a standard map). Why they did overcomplicate the issue is past any of my suspicions, but it is what it is (notice that in BNW not one of the extracted XML variables are being used anymore, so no point in trying to change those).
What we could do, is change the above code to something that represents more what it would be to "elect a world leader" in real life; I would think at least 2/3 majority of the delegates.
Notice also that dead CS and dead Civs still count as half for the calculations... logic of this, I don't know.
Notice, also, that iVotesPerCityState is not being used for the calculations at any point, although it is being fetched. That sounds like a bug, because they clearly try to incorporate the CS delegates in their logarithmic model.
What I would do is change the line
.
The dead=1/2 is meant to reduce the "Diplo victory by elimination" situation.. ie eliminating an opponent is only going to help a little. (mostly by stopping them voting for someone else than lowering the level much.)
My guess is that the Crazy log formula is to make it easier in a large number v. harder in a small number (of civs/CS)
And they are right that civ votes are harder to get.
By that logic, domination is also the ultimate science and cultural victory too.Yes, that is what I thought, but to me it does not make sense. In the end, Domination is the ultimate diplo victory: if there is no one left, you are in effect the World Leader. If the voting gets "easier" by eliminating opponents (which is not true given the diplo penalties associated with that), then that should be a valid strategy.
By that logic, domination is also the ultimate science and cultural victory too.
Actually...this might be less silly than it sounds at first. What if there were actually no domination victory condition at all, and you really were just choosing whether or not to use your military as a means to one of the other victory conditions?
I think the only change needed to fix Diplo Victory is to make the AI more competitive with it. They should be spending all their gold outbuying your city states when possible.
////////////////////////////////////
// DIPLO GRAND STRATEGY
////////////////////////////////////
if(IsGoingForDiploVictory())
{
viApproachWeights[MINOR_CIV_APPROACH_CONQUEST] += /*-20*/ GC.getMINOR_APPROACH_WAR_DIPLO_GRAND_STRATEGY();
viApproachWeights[MINOR_CIV_APPROACH_IGNORE] += /*-15*/ GC.getMINOR_APPROACH_IGNORE_DIPLO_GRAND_STRATEGY();
viApproachWeights[MINOR_CIV_APPROACH_BULLY] += -15; //antonjs: todo: constant/XML
// Neighbors and Close: +5 to Protective
if(GetPlayer()->GetProximityToPlayer(ePlayer) >= PLAYER_PROXIMITY_CLOSE)
viApproachWeights[MINOR_CIV_APPROACH_PROTECTIVE] += /*5*/ GC.getMINOR_APPROACH_PROTECTIVE_DIPLO_GRAND_STRATEGY_NEIGHBORS();
}
// Calculate desirability to give this minor gold
if(bWantsToMakeGoldGift && !bWantsToBuyoutThisMinor)
{
int iValue = /*100*/ GC.getMC_GIFT_WEIGHT_THRESHOLD();
// If we're not protective or friendly, then don't bother with minor diplo
if(eApproach == MINOR_CIV_APPROACH_PROTECTIVE || eApproach == MINOR_CIV_APPROACH_FRIENDLY)
{
......
// Diplo victory makes us more likely to spend gold
if(IsGoingForDiploVictory())
iValue += /*100*/ GC.getMC_GIFT_WEIGHT_DIPLO_VICTORY();
// double up if this is the home stretch
if(GC.getGame().IsUnitedNationsActive())
{
iValue += /*100*/ GC.getMC_GIFT_WEIGHT_DIPLO_VICTORY();
}
Now that i cant let go can i?Diplo victory simply comes too easily, and too soon compared to other VC.
Now that i cant let go can i?
Can you get Diplo victory on large Pangaea map with 10 other civs at 1500ADcan you?
On king and emperor i often win even before votes are available.
If you recall a civ to life, they will vote for you as world leader (even if they don't like you, and even if you vote for someone else). I've seen mention both here and on Reddit of people getting other civs' votes even without doing that, but none of them has been able to pinpoint exactly why.I find the weirdest thing about diplo victory's is that 90% of the time you basically vote yourself the winner. Who isn't going to vote for themselves, and in that case, why even have a vote?
Which brings me to another point, I have yet to see the AI vote for anyone but themselves to determine host of congress. You'd think they'd be smart and vote for anyone but the guy with the most delegates, but no, they vote for themselves.
Domination is a separate victory.Yes, that is what I thought, but to me it does not make sense. In the end, Domination is the ultimate diplo victory: if there is no one left, you are in effect the World Leader. If the voting gets "easier" by eliminating opponents (which is not true given the diplo penalties associated with that), then that should be a valid strategy.
Well, it shouldn't be easier when there are a large number of competitors. There is a reason why the CS is always double the number of civs: so that each civ has in average 2 CS at their disposal.
I still think the number required to win should be a fixed percentage of the existing delegates (2/3). Easy, simple, direct, and harder.