He has a point, though.
I agree with this:
It's far more annoying to accidentally trigger this dialog 'cause their culture expanded and suddenly they see two more units than they did before, putting them above the threshold for how many units they're ok with.
It's gamey and unrealistic.
 
Why is that more "gamey" than researching a tech from one turn to another and instantly upgrading your siege weapons, for example? This game changes turn to turn. Unrealistic jolts like these are to be expected.
Never said it is more gamey than the other gamey thing you've mentioned. It doesn't mean it's not, though.
 
Last edited:
Sometimes I would really like to be able to choose a few alternative answers. For example, "Who the hell gives you the right to question me?" Or "Actually, I could ask you the same thing..."
 
The implication of
"Actually, I could ask you the same thing..."
is now baked in, as I understand it. (the pledge has become mutual)
 
Yes, 4.12 I see it in the changelog
Military (Move Troops) Promise
- Is now mutual - the asker also agrees not to declare war on the player they're requesting the promise from
- Blocked AI teammates of humans from requesting or accepting move troops promises
- Also blocked AI from requesting a "don't attack my protected City-State" promise from AI teammates of humans
These exceptions are to prevent human teammates from incurring backstabbing penalties for promises they weren't aware were made, since AI will penalize an entire team for those penalties
 
So, to find out if a neighbor is about to attack me, I just have to send a few units to the border to provoke the ominous question? If it doesn't come, I know enough...
 
So, to find out if a neighbor is about to attack me, I just have to send a few units to the border to provoke the ominous question? If it doesn't come, I know enough...
If I'm reading your question right, you don't have to send any units anywhere. You just ask "Are you going to attack us, swine?", the same way that they ask you if you're about to attack. The same mutual no-DOW counter (20 turns, I think) then begins.

EDIT: The "swine"option appears only if the AI has crossed the units/proximity threshold. But if you''re paranoid, you could look for the option every turn.
 
Last edited:
So, to find out if a neighbor is about to attack me, I just have to send a few units to the border to provoke the ominous question? If it doesn't come, I know enough...
The AI won't request the promise if they themselves are planning to attack, yes.

Note: I changed this code so that in 5.0, canDeclareWar() must return true in both directions. Not currently the case.

Code:
/// Possible Contact Statement - guy has his military positioned aggressively near us
void CvDiplomacyAI::DoAggressiveMilitaryStatement(PlayerTypes ePlayer, DiploStatementTypes& eStatement)
{
    if (eStatement == NO_DIPLO_STATEMENT_TYPE)
    {
        // Don't bother if they've already made or broken a military promise to us
        if (GetMilitaryPromiseState(ePlayer) > NO_PROMISE_STATE)
            return;

        // We must be able to declare war on each other - in both directions, since the promise is mutual
        TeamTypes eTeam = GET_PLAYER(ePlayer).getTeam();
        if (!GET_TEAM(eTeam).canDeclareWar(GetTeam(), ePlayer) || !GET_TEAM(GetTeam()).canDeclareWar(eTeam, GetID()))
            return;

        // They're HIGH or INCREDIBLE this turn
        if (GetMilitaryAggressivePosture(ePlayer) < AGGRESSIVE_POSTURE_HIGH)
            return;

        // AI teammates of humans can't send this, otherwise the humans on our team might get a backstabbing penalty for something they weren't aware of
        if (GetPlayer()->IsAITeammateOfHuman())
            return;

        // Don't send this to AI teammates of humans, otherwise the humans on their team might get a backstabbing penalty for something they weren't aware of
        if (GET_PLAYER(ePlayer).IsAITeammateOfHuman())
            return;

        // This promise is mutual, so don't send the statement if we (or our teammates) are planning war
        if (AvoidExchangesWithPlayer(ePlayer, /*bWarOnly*/ true))
            return;

        // Check other player status
        for (int iThirdPartyLoop = 0; iThirdPartyLoop < MAX_MAJOR_CIVS; iThirdPartyLoop++)
        {
            PlayerTypes eThirdParty = (PlayerTypes) iThirdPartyLoop;
            if (eThirdParty == GetID() || eThirdParty == ePlayer)
                continue;

            // Are they at war with anyone we're neighbors with?
            if (GetPlayer()->GetProximityToPlayer(eThirdParty) == PLAYER_PROXIMITY_NEIGHBORS && GET_TEAM(GET_PLAYER(ePlayer).getTeam()).isAtWar(GET_PLAYER(eThirdParty).getTeam()))
                return;

            // Are they an AI preparing for a coop war against us with a human? Don't send this statement, because being dragged into a war early is unfun for humans
            if (!GET_PLAYER(ePlayer).isHuman() && GET_PLAYER(eThirdParty).isHuman() && GET_PLAYER(eThirdParty).GetDiplomacyAI()->GetCoopWarState(ePlayer, GetID()) == COOP_WAR_STATE_PREPARING)
                return;
        }

        DiploStatementTypes eTempStatement = DIPLO_STATEMENT_AGGRESSIVE_MILITARY_WARNING;
        int iTurnsBetweenStatements = 20;

        if (GetNumTurnsSinceStatementSent(ePlayer, eTempStatement) >= iTurnsBetweenStatements)
            eStatement = eTempStatement;
    }
}
 
I thought that this offensive wording could not be meant to be purely informative, but rather to provoke the AI to declare war
It's not, it does the exact same thing to the AI that the AI does to you when they ask you to not declare war on them.
Aka : they have the choice to either attack you right away, or promise not to attack you for 30 turns.
 
  • Like
Reactions: 4CV
I thought that this offensive wording could not be meant to be purely informative, but rather to provoke the AI to declare war
"Going to attack us, swine?" is a replacement for "Please move your troops from our borders."

It only appears if the AI is acting hostile towards you.
 
I thought that this offensive wording could not be meant to be purely informative, but rather to provoke the AI to declare war
I use it a lot, and it doesn't provole the Ai to attack if they weren't going to already. The wording is definitely insulting, but the two possible responses are some version of "prepare to die" or "don't worry, you wimp, we aren't attacking you just yet'... after which there's a 20-turn (I think) cooling off period for both sides.
 
  • Like
Reactions: 4CV
Where could I predefine policies for some civs? Sometimes I can see akward choices like Polynesia goes fealty or Brazil goes fealty. I would prefer AI goes artistry for both of them.
 
I don't think it's possible without resorting to lua.
AI policy preferences are one of the outstanding frontiers for the mod.
(It's also not to say that Polynesia should always go Artistry, for example. Fealty has bonuses to Tourism through the shared religion modifier and ofc other benefits they might like, such as border growth.)
 
I asked it some time ago and the responses indicated that I was imagining things, but...

...is it possible, that the 20% faster building rate for diplomacy units does not apply (correctly)? I don't have the data right now, but I usually go for one city that specializes in diplomacy units (meaning it gets all the buildings, chancery, printing press etc.). Last time I compared the production values between different cities, and they were similar (I know, could I BE more precise?). But my "diplomacy" city is usually as "quick" as other cities that don't have any of said buildings.
They way I understand it, every building gives you a 20% production boost to diplomacy units (I think), which should stack. So my diplomacy city should be able to produce these units at a FAR faster rate, but that's usually never the case.

So... Could anyone verify (or debunk) this suspicion of mine? It strikes me as weird that I'm the only one with this feeling, which is an indicator that I am wrong on this. So see this as one final attempt to put this to rest. Thank you!
 
I asked it some time ago and the responses indicated that I was imagining things, but...

...is it possible, that the 20% faster building rate for diplomacy units does not apply (correctly)? I don't have the data right now, but I usually go for one city that specializes in diplomacy units (meaning it gets all the buildings, chancery, printing press etc.). Last time I compared the production values between different cities, and they were similar (I know, could I BE more precise?). But my "diplomacy" city is usually as "quick" as other cities that don't have any of said buildings.
They way I understand it, every building gives you a 20% production boost to diplomacy units (I think), which should stack. So my diplomacy city should be able to produce these units at a FAR faster rate, but that's usually never the case.

So... Could anyone verify (or debunk) this suspicion of mine? It strikes me as weird that I'm the only one with this feeling, which is an indicator that I am wrong on this. So see this as one final attempt to put this to rest. Thank you!
You can look at the city's production tooltip to see all the percentage bonuses that it has. You can then compare that to another city that doesn't have all the diplomacy buildings to see the difference.
 
I asked it some time ago and the responses indicated that I was imagining things, but...

...is it possible, that the 20% faster building rate for diplomacy units does not apply (correctly)? I don't have the data right now, but I usually go for one city that specializes in diplomacy units (meaning it gets all the buildings, chancery, printing press etc.). Last time I compared the production values between different cities, and they were similar (I know, could I BE more precise?). But my "diplomacy" city is usually as "quick" as other cities that don't have any of said buildings.
They way I understand it, every building gives you a 20% production boost to diplomacy units (I think), which should stack. So my diplomacy city should be able to produce these units at a FAR faster rate, but that's usually never the case.

So... Could anyone verify (or debunk) this suspicion of mine? It strikes me as weird that I'm the only one with this feeling, which is an indicator that I am wrong on this. So see this as one final attempt to put this to rest. Thank you!
I've had this impression from time to time, but I think it's more of a deception.

As far as I understand it, bonus buildings give a fixed % bonus to production each turn, but no compound interest. Diplo units are comparatively expensive, so often take several turns. You rarely have several cities with exactly the same production. This can lead to quite large distortions.

For example: A city with 100 production and 20% bonus has accumulated 600 hammers after 5 turns. If the produced unit costs 601 hammers, the city needs a sixth turn despite the bonus.
A city with 101 production achieves the same without a bonus!

And don't forget: If a city needs exactly two turns of production for a certain unit, even an impressive bonus of 99%, which can never be achieved in reality, does not change this. It still needs two turns.

Edit: I just looked it up in my running game: Bonus are 20% Roman forum, 10% Scriveners Office, 10% Chancery.
It is very, very rare that I get (or even try) Roman Forum. Scriveners is a must have. But I try to build chanceries everywhere as well, for the culture and science, fighting unhappiness.
Ofc I avoid building diplo units in other cities, so in practice there is max 10% difference.
 
Last edited:
Back
Top Bottom