Asterix Rage
Warlord
- Joined
- Jun 6, 2010
- Messages
- 1,585
Fantastic work, as always!They do.
With the new icons as well
Defensive Firing Position.
It’s Americanese for a Tobruk/foxhole. Americans like to invent unnecessary initialisms.
Dunno. My trade deals look normal.Why is it so hard to trade luxuries? getting below -500 deal value for everyone with no diplo penalties
You can go over local pop size if you use a specialist, it was needed to make the system more playable.Is local unhappiness no longer limited to pop size?
You can go over local pop size if you use a specialist, it was needed to make the system more playable.
On a similar note, the anti-urbanization values are a lot less important.
Something I've noticed in the last two patches: Playing domination, I'm getting denounced by civs the turn after I meet them:
I can *kinda* see him getting cranky with me about warmongering, since he could theoretically have the knowledge that I have three capitals, but the "building new cities too aggressively" feels pretty bogus, since he has no idea how I've been building my cities.
And either way, being denounced for things he wasn't around for always feels crappy.
/// Is ePlayer expanding recklessly?
bool CvDiplomacyAI::IsPlayerRecklessExpander(PlayerTypes ePlayer)
{
// If the player is too far away from us, we don't care
if(GetPlayer()->GetProximityToPlayer(ePlayer) < PLAYER_PROXIMITY_CLOSE)
return false;
// If the player has too few cities, don't worry about it
int iNumCities = GET_PLAYER(ePlayer).getNumCities();
if(iNumCities < 4)
return false;
double fAverageNumCities = 0;
int iNumPlayers = 0;
// Find out what the average is (minus the player we're looking at)
PlayerTypes eLoopPlayer;
CvPlayer* pPlayer;
for(int iPlayerLoop = 0; iPlayerLoop < MAX_MAJOR_CIVS; iPlayerLoop++)
{
eLoopPlayer = (PlayerTypes) iPlayerLoop;
pPlayer = &GET_PLAYER(eLoopPlayer);
// Not alive
if(!pPlayer->isAlive())
continue;
// Not the guy we're looking at
if(eLoopPlayer == ePlayer)
continue;
iNumPlayers++;
fAverageNumCities += pPlayer->getNumCities();
}
// Not sure how this would happen, but we'll be safe anyways since we'll be dividing by this value
if(iNumPlayers == 0)
{
CvAssertMsg(false, "0 players to evaluate when trying to identify if someone is a reckless expander. Not sure how this would happen without the game being over yet.");
return false;
}
fAverageNumCities /= iNumPlayers;
// Must have way more cities than the average player in the game
if(iNumCities < fAverageNumCities * 1.5)
return false;
// If this guy's military is as big as ours, then it probably means he's just stronger than us
if(GetPlayerMilitaryStrengthComparedToUs(ePlayer) >= STRENGTH_AVERAGE)
return false;
return true;
}
Here's the code for reckless expansion:
Code:/// Is ePlayer expanding recklessly? bool CvDiplomacyAI::IsPlayerRecklessExpander(PlayerTypes ePlayer) { // If the player is too far away from us, we don't care if(GetPlayer()->GetProximityToPlayer(ePlayer) < PLAYER_PROXIMITY_CLOSE) return false; // If the player has too few cities, don't worry about it int iNumCities = GET_PLAYER(ePlayer).getNumCities(); if(iNumCities < 4) return false; double fAverageNumCities = 0; int iNumPlayers = 0; // Find out what the average is (minus the player we're looking at) PlayerTypes eLoopPlayer; CvPlayer* pPlayer; for(int iPlayerLoop = 0; iPlayerLoop < MAX_MAJOR_CIVS; iPlayerLoop++) { eLoopPlayer = (PlayerTypes) iPlayerLoop; pPlayer = &GET_PLAYER(eLoopPlayer); // Not alive if(!pPlayer->isAlive()) continue; // Not the guy we're looking at if(eLoopPlayer == ePlayer) continue; iNumPlayers++; fAverageNumCities += pPlayer->getNumCities(); } // Not sure how this would happen, but we'll be safe anyways since we'll be dividing by this value if(iNumPlayers == 0) { CvAssertMsg(false, "0 players to evaluate when trying to identify if someone is a reckless expander. Not sure how this would happen without the game being over yet."); return false; } fAverageNumCities /= iNumPlayers; // Must have way more cities than the average player in the game if(iNumCities < fAverageNumCities * 1.5) return false; // If this guy's military is as big as ours, then it probably means he's just stronger than us if(GetPlayerMilitaryStrengthComparedToUs(ePlayer) >= STRENGTH_AVERAGE) return false; return true; }
Reckless expansion doesn't factor in whether they know the other players they're using for the average, or the cities being visible, and increases WAR and HOSTILE scores; weight is not added for possessing multiple capitals unless you have at least 75% of the world's capitals under your control. I do believe anyone can see how many cities another player has, though; as you can see in that screenshot, the Inca have 9.
I don't believe you're supposed to get warmongering opinion penalties when a player hasn't met you; I haven't altered this, either. Potential bug.
I had mentioned in the previous version's thread that the AI was handling navies and embarked units badly. Here's an example of Attila sacrificing his units into my meatgrinder for no discernible advantage:
Spoiler :![]()
He's already lost five or six units this way, has not landed a single unit on my shores (aside from a single Horse Archer immediately after his first declaration. It also died instantly.) and I have not seen even a hint of an actual ship.