AI voting on World Congress Sanctions seems...bad

dailyminerals

Chieftain
Joined
May 16, 2018
Messages
54
Repeatedly in games I'll have nearly every single AI in the game vote to sanction me, even AIs that I have DoF'ed, have been trading with for literally thousands of years, with like 50% of my trade routes go directly to them, and have a laundry list of trade deals together.

I've had voluntary vassals who're basically in love with me vote to sanction me. Bismarck, who I've DoF'ed, voted to sanction me, even though my trade deals were literally the only way he was gaining access to any iron and coal at all. I was basically the reason he was able to build a tech current military, and he votes to sanction me and loses access to those resources. Like, huh?

There's just no logic to how or why an AI would vote to sanction another civ when they're about as far from being an enemy as you can get, and it just becomes this obnoxious dogpile of seemingly brain-dead AI voting for sanctions when it hurts both them and their closest ally.

I think this might need to be looked at.
 
I think if your ahead the AI attempts to sanction as a way to bring you to heel. The trick is as you say, that losing all of those TRs does hurt your ability to catch back up, but ultimately you can remake them with another civ and the sanction will hurt worse....especially once corporations are established.
 
Well maybe people just play this game differently than me, but I've never cared about the victory conditions in Civ. For me, it's about the journey, not the destination. And in that regard, AIs that just revert to very transparent 'I'M A ROBOT" type of behavior by de facto voting to sanction you regardless of whether it's in their best interest simply because of where you lie on a scorecard is not very good design, IMHO.
 
It's expected of the AI to do "anything they can" to prevent someone else from winning.

I dislike the sanction option generally though in world congress, it doesn't make much sense and seems very unrealistic to be able to sanction a country to trade with the rest of the world
 
I also think the AI logic is effectively that you are getting to powerful and they are trying to even things out. It could be that your citizens are making so much gold that its raising the world average and making their citizens unhappy due to poverty (though I'm unsure if the AI takes that into account when voting). There is a bit real-world logic to it as you could imagine even long term allies might feel you aren't sharing your prosperity and may want better relations with your rival who proposed the sanctions.
However there are many diplomatic options to combat being crippled by sanctions:
1. Use your spies as diplomats with your friends and get them to vote against the sanctions. If they love you its typically quite cheap, and even if its only one vote against sanctions that means they cant put any votes for it. Plus it may hurt their relations with the civ that proposed it (again, unsure if this actually happens but it should).
2. For friends or neutrals that you cant buy votes from, give them gpt for something. The AI seems to understand that voting to sanction you will cancel this deal and they will lose the gpt income. Buying a tech is a great option, since if you do get sanctioned at least you got a tech on the cheap. If they have nothing of value to you, just give them whatever gpt you can spare as a gift. Give till it hurts basically.
3. For the enemy with a ton of votes that wants to do bad things to you, every session you propose something that would be very bad for them (typically sanctions or decolonization since you can alternate between them each session). The goal isnt to get your resolution passed but to make the enemy AI spend lots of votes to defeat it and make it harder to pass the one against you. You may have to forgo proposing the world's fair, treasure fleet, sphere of influence, etc. but its better than being crippled. This of course depends on having enough votes make proposals, so plan for that.
I've found that I can nearly always avoid sanctions way but you have to put significant resources into it. You may have to completely give up on spying activities, raking in fat stacks of gold, and proposing any resolutions actually good for you. To me its pretty cool to have these tools that can stymie an enemy with many more votes than you.
 
I also think the AI logic is effectively that you are getting to powerful and they are trying to even things out. It could be that your citizens are making so much gold that its raising the world average and making their citizens unhappy due to poverty (though I'm unsure if the AI takes that into account when voting). There is a bit real-world logic to it as you could imagine even long term allies might feel you aren't sharing your prosperity and may want better relations with your rival who proposed the sanctions.
However there are many diplomatic options to combat being crippled by sanctions:
1. Use your spies as diplomats with your friends and get them to vote against the sanctions. If they love you its typically quite cheap, and even if its only one vote against sanctions that means they cant put any votes for it. Plus it may hurt their relations with the civ that proposed it (again, unsure if this actually happens but it should).
2. For friends or neutrals that you cant buy votes from, give them gpt for something. The AI seems to understand that voting to sanction you will cancel this deal and they will lose the gpt income. Buying a tech is a great option, since if you do get sanctioned at least you got a tech on the cheap. If they have nothing of value to you, just give them whatever gpt you can spare as a gift. Give till it hurts basically.
3. For the enemy with a ton of votes that wants to do bad things to you, every session you propose something that would be very bad for them (typically sanctions or decolonization since you can alternate between them each session). The goal isnt to get your resolution passed but to make the enemy AI spend lots of votes to defeat it and make it harder to pass the one against you. You may have to forgo proposing the world's fair, treasure fleet, sphere of influence, etc. but its better than being crippled. This of course depends on having enough votes make proposals, so plan for that.
I've found that I can nearly always avoid sanctions way but you have to put significant resources into it. You may have to completely give up on spying activities, raking in fat stacks of gold, and proposing any resolutions actually good for you. To me its pretty cool to have these tools that can stymie an enemy with many more votes than you.
What he said. And maybe to add #4 (or #0): the AI doesn't just go after you for being ahead, if you have lots of votes from allies, etc, they seem follow #3 themselves. They'll vote to hurt you to force you into defensive votes rather than, say, passing sphere of influence on every city state in the game.
 
It works as intended. The opposite complain would be that you are the leader in techs and culture and there is nothing the AIs can do to stop you. You're about to win the game and they don't do anything against you. In that context victory is only a formality. I much prefer the current meta.

Also, Scottay pretty much covers everything you can do to deal with that. All these different actions you can do makes the end game much more interesting.

I've had voluntary vassals who're basically in love with me vote to sanction me
You didn't really believe they loved you for real did you ? Your nickname makes me think about Stellaris.
 
I've adjusted it for next version, should be better re: sanctioning friends and allies; they will still be motivated to sanction competitors. Also disabled the victory penalties if the AI isn't competing for victory.
 
There seems to be two different camps here when it comes to gameplay. One that wants to treat it like a game in the shape of a world simulator, with winners and losers and points and the AI being aware of the concept of 'victory'. And one that wants to treat it as a simulator where the AI is just acting in their own 'in-universe' logical interest, and since the simulation can't go on forever there exist victory conditions that the human player can strive for. From looking around the forums it seems that most of the active members are part of the first camp and tend to be warmongers ( I could be way off on this ).

I prefer the second camp because otherwise diplomacy and trade and even science all go out the window toward the end of the game if you're leading. How can a peaceful trade heavy strategy ever win if you're automatically sanctioned and DOW'ed despite established relations with most of the world? In the end, I think this is a very minor issue. Because if I find myself far ahead by the modern era then I actually welcome even arbitrary aggression from the AI.

But this creates issues like this one, where it makes sense to a lot of people that the AI would attempt to sabotage the leader of the pack with sanctions or war etc. But to me it makes sense that weaker AIs would want to do the exact opposite and ally themselves with the strongest player. Then the AI would be acting like a simulator rather than a de facto opponent, which imo is the appeal of civ.

The downsides of the second camp are that runaway victories are more likely if there are fewer 'difficulties' to overcome once you are peaceful and leading the pack. To combat this I think there should still be difficulties to overcome, but realistic (within the context of the simulation) ones such as:

tech leakage: allies and even enemies automatically getting tech from you if you're way ahead in science and independent of world congress acts
culture leakage: similar to tech but modified the same way tourism is (shared ideology, open borders, etc)
higher dependence on happiness for science and growth: a complacent population is more delicate
higher unhappiness from war weariness: same as above, complacent population is more devastated by a long war, even if just defending
more responsibility to defend allies: sending money and resources during allies wars is more necessary to maintain friendship if you are far ahead of them point-wise
higher but gradual bonuses to AI: if this makes victory too easy, that's why there's a sliding difficulty scale

these are just off the top of my head now that hopefully wouldn't require a lot of new game mechanics, i'm sure there are better ones
 
If y'all are curious :)

OLD CODE:
Code:
    // Embargo
   if (pProposal->GetEffects()->bEmbargoPlayer)
   {
       CvAssertMsg(eTargetPlayer != NO_PLAYER, "Evaluating an embargo on NO_PLAYER. Please send Anton your save file and version.");
       // Major Civ relations
       if (eTargetPlayer == GetPlayer()->GetID())
       {
           iScore += -1000;
       }
       else if (GET_PLAYER(eTargetPlayer).getTeam() == GetPlayer()->getTeam())
       {
           iScore += -500;
       }
       else if (!GET_PLAYER(eTargetPlayer).isMinorCiv())
       {
           ThreatTypes eWarmongerThreat = GetPlayer()->GetDiplomacyAI()->GetWarmongerThreat(eTargetPlayer);
           MajorCivOpinionTypes eOpinion = GetPlayer()->GetDiplomacyAI()->GetMajorCivOpinion(eTargetPlayer);
           MajorCivApproachTypes eApproach = GetPlayer()->GetDiplomacyAI()->GetMajorCivApproach(eTargetPlayer, /*bHideTrueFeelings*/ false);
           if (GET_TEAM(GetPlayer()->getTeam()).isAtWar(GET_PLAYER(eTargetPlayer).getTeam()))
           {
               iScore += 30;
           }
           else if (eWarmongerThreat >= THREAT_SEVERE)
           {
               iScore += 30;
           }
           else if (eOpinion < MAJOR_CIV_OPINION_COMPETITOR || eApproach < MAJOR_CIV_APPROACH_GUARDED)
           {
               iScore += 30;
           }
           else if (eOpinion == MAJOR_CIV_OPINION_ALLY)
           {
               iScore += -400;
           }
           else
           {
               iScore += -100;
           }

           //Ideological opponent
           PolicyBranchTypes ePlayerIdeology = GetPlayer()->GetPlayerPolicies()->GetLateGamePolicyTree();
           PolicyBranchTypes eSanctionIdeology = GET_PLAYER(eTargetPlayer).GetPlayerPolicies()->GetLateGamePolicyTree();
           if(ePlayerIdeology != eSanctionIdeology)
           {
               iScore += 50;
           }
           if(bSeekingConquestVictory)
           {
               iScore += 50;
           }
           if(GetPlayer()->GetDiplomacyAI()->IsArmyInPlaceForAttack(eTargetPlayer))
           {
               iScore += 50;
           }

           // Trade connections
           if (GC.getGame().GetGameTrade()->IsPlayerConnectedToPlayer(GetPlayer()->GetID(), eTargetPlayer))
           {
               int iFactor = -50;
               iScore += MAX(-50, GC.getGame().GetGameTrade()->CountNumPlayerConnectionsToPlayer(GetPlayer()->GetID(), eTargetPlayer) * iFactor);
           }

           // Player Trait making routes to them valuable (Morocco)
           for (int i = 0; i < NUM_YIELD_TYPES; i++)
           {
               YieldTypes e = (YieldTypes) i;
               if (GetPlayer()->GetPlayerTraits()->GetYieldChangeIncomingTradeRoute(e) > 0)
               {
                   iScore += -100;
                   break;
               }
           }

           // Player Trait gives us extra routes, embargoes are bad for business (Venice)
           if (GetPlayer()->GetPlayerTraits()->GetNumTradeRoutesModifier() > 0)
           {
               iScore += -100;
           }

           if (GetPlayer()->GetDiplomacyAI()->GetBiggestCompetitor() == eTargetPlayer)
           {
               iScore += 250;
           }

           if (GET_PLAYER(eTargetPlayer).GetDiplomacyAI()->IsCloseToCultureVictory() || GET_PLAYER(eTargetPlayer).GetDiplomacyAI()->IsCloseToDiploVictory() || GET_PLAYER(eTargetPlayer).GetDiplomacyAI()->IsCloseToSSVictory() || GET_PLAYER(eTargetPlayer).GetDiplomacyAI()->IsCloseToDominationVictory())
           {
               iScore += 1000;
           }
       }
   }
NEW (ADJUSTED) CODE:
Code:
    // Embargo
   if (pProposal->GetEffects()->bEmbargoPlayer)
   {
       CvAssertMsg(eTargetPlayer != NO_PLAYER, "Evaluating an embargo on NO_PLAYER. Please send Anton your save file and version.");
       // Major Civ relations
       if (eTargetPlayer == GetPlayer()->GetID())
       {
           iScore += -1000;
       }
       else if (GET_PLAYER(eTargetPlayer).getTeam() == GetPlayer()->getTeam())
       {
           iScore += -700;
       }
       else if (GET_PLAYER(eTargetPlayer).isMajorCiv())
       {
           if (bSeekingConquestVictory)
           {
               iScore += 50;
           }

           if (GetPlayer()->GetDiplomacyAI()->GetWarmongerThreat(eTargetPlayer) >= THREAT_SEVERE)
           {
               iScore += 50;
           }

           if (GET_TEAM(GetPlayer()->getTeam()).isAtWar(GET_PLAYER(eTargetPlayer).getTeam()))
           {
               iScore += 100;
           }
           else if (GetPlayer()->GetDiplomacyAI()->IsArmyInPlaceForAttack(eTargetPlayer))
           {
               iScore += 100;
           }
           else if (GetPlayer()->GetDiplomacyAI()->IsWantsSneakAttack(eTargetPlayer))
           {
               iScore += 50;
           }
           else
           {
               switch (GetPlayer()->GetDiplomacyAI()->GetMajorCivApproach(eTargetPlayer, /*bHideTrueFeelings*/ false))
               {
               case MAJOR_CIV_APPROACH_WAR:
               case MAJOR_CIV_APPROACH_HOSTILE:
                   iScore += 50;
                   break;
               case MAJOR_CIV_APPROACH_DECEPTIVE:
               case MAJOR_CIV_APPROACH_GUARDED:
                   iScore += 30;
                   break;
               case MAJOR_CIV_APPROACH_AFRAID:
                   iScore += 15;
                   break;
               case MAJOR_CIV_APPROACH_NEUTRAL:
                   iScore -= 50;
                   break;
               case MAJOR_CIV_APPROACH_FRIENDLY:
                   iScore -= 100;
                   break;
               }
           }

           switch (GetPlayer()->GetDiplomacyAI()->GetMajorCivOpinion(eTargetPlayer))
           {
           case MAJOR_CIV_OPINION_UNFORGIVABLE:
               iScore += 100;
               break;
           case MAJOR_CIV_OPINION_ENEMY:
               iScore += 50;
               break;
           case MAJOR_CIV_OPINION_COMPETITOR:
               iScore += 30;
               break;
           case MAJOR_CIV_OPINION_NEUTRAL:
               iScore -= 10;
               break;
           case MAJOR_CIV_OPINION_FAVORABLE:
               iScore -= 30;
               break;
           case MAJOR_CIV_OPINION_FRIEND:
               iScore -= 50;
               break;
           case MAJOR_CIV_OPINION_ALLY:
               iScore -= 200;
               break;
           }

           if (GetPlayer()->GetDiplomacyAI()->IsDoFAccepted(eTargetPlayer) && !GetPlayer()->GetDiplomacyAI()->IsWantsToEndDoFWithPlayer(eTargetPlayer))
           {
               iScore -= 150;
           }

           if (GetPlayer()->GetDiplomacyAI()->IsHasDefensivePact(eTargetPlayer) && !GetPlayer()->GetDiplomacyAI()->IsWantsToEndDefensivePactWithPlayer(eTargetPlayer))
           {
               iScore -= 50;
           }

           if (GetPlayer()->GetDiplomacyAI()->WasResurrectedBy(eTargetPlayer))
           {
               iScore -= 1000;
           }

           if (GetPlayer()->GetDiplomacyAI()->IsPlayerSameIdeology(eTargetPlayer))
           {
               iScore -= 50;
           }
           else if (GetPlayer()->GetDiplomacyAI()->IsPlayerOpposingIdeology(eTargetPlayer) && !GetPlayer()->GetDiplomacyAI()->IsIgnoreIdeologyDifferences(eTargetPlayer))
           {
               iScore += 50;
           }

           if (GetPlayer()->GetDiplomacyAI()->IsPlayerSameReligion(eTargetPlayer))
           {
               iScore -= 25;
           }
           else if (GetPlayer()->GetDiplomacyAI()->IsPlayerOpposingReligion(eTargetPlayer) && !GetPlayer()->GetDiplomacyAI()->IsIgnoreReligionDifferences(eTargetPlayer))
           {
               iScore += 25;
           }

           if (GET_TEAM(GetPlayer()->getTeam()).IsVassal(GET_PLAYER(eTargetPlayer).getTeam()))
           {
               switch (GetPlayer()->GetDiplomacyAI()->GetVassalTreatmentLevel(eTargetPlayer))
               {
               case VASSAL_TREATMENT_CONTENT:
                   iScore -= 200;
                   break;
               case VASSAL_TREATMENT_DISAGREE:
                   iScore -= 50;
                   break;
               case VASSAL_TREATMENT_MISTREATED:
                   iScore += 50;
                   break;
               case VASSAL_TREATMENT_UNHAPPY:
                   iScore += 200;
                   break;
               case VASSAL_TREATMENT_ENSLAVED:
                   iScore += 500;
                   break;
               }
           }

           // Trade connections
           if (GC.getGame().GetGameTrade()->IsPlayerConnectedToPlayer(GetPlayer()->GetID(), eTargetPlayer))
           {
               int iFactor = -50;
               iScore += MAX(-50, GC.getGame().GetGameTrade()->CountNumPlayerConnectionsToPlayer(GetPlayer()->GetID(), eTargetPlayer) * iFactor);
           }

           // Deals with them
           int iTradeDealValue = GC.getGame().GetGameDeals().GetDealValueWithPlayer(GetPlayer()->GetID(), eTargetPlayer);

           // Scale based on personality - how much do we care about trade loyalty?
           iTradeDealValue *= (GetPlayer()->GetDiplomacyAI()->GetLoyalty() + GetPlayer()->GetDiplomacyAI()->GetDiploBalance());
           iTradeDealValue /= 100;

           iScore -= iTradeDealValue;

           // Player Trait making routes to them valuable (Morocco)
           for (int i = 0; i < NUM_YIELD_TYPES; i++)
           {
               YieldTypes e = (YieldTypes) i;
               if (GetPlayer()->GetPlayerTraits()->GetYieldChangeIncomingTradeRoute(e) > 0)
               {
                   iScore += -100;
                   break;
               }
           }

           // Player Trait gives us extra routes, embargoes are bad for business (Venice)
           if (GetPlayer()->GetPlayerTraits()->GetNumTradeRoutesModifier() > 0)
           {
               iScore += -100;
           }

           if (GetPlayer()->GetDiplomacyAI()->IsDenouncedPlayer(eTargetPlayer) || GetPlayer()->GetDiplomacyAI()->IsDenouncedByPlayer(eTargetPlayer))
           {
               iScore += 50;
           }

           if (GetPlayer()->GetDiplomacyAI()->GetBiggestCompetitor() == eTargetPlayer)
           {
               iScore += 250;
           }
           else if (GetPlayer()->GetDiplomacyAI()->IsMajorCompetitor(eTargetPlayer))
           {
               iScore += 100;
           }

           if (GetPlayer()->GetDiplomacyAI()->IsUntrustworthy(eTargetPlayer))
           {
               iScore += 500;
           }

           if (GetPlayer()->GetDiplomacyAI()->IsCompetingForVictory())
           {
               if (GET_PLAYER(eTargetPlayer).GetDiplomacyAI()->IsCloseToAnyVictoryCondition())
               {
                   iScore += 1000;
               }

               switch (GetPlayer()->GetDiplomacyAI()->GetVictoryDisputeLevel(eTargetPlayer))
               {
               case DISPUTE_LEVEL_FIERCE:
                   iScore += 100;
                   break;
               case DISPUTE_LEVEL_STRONG:
                   iScore += 75;
                   break;
               case DISPUTE_LEVEL_WEAK:
                   iScore += 50;
                   break;
               case DISPUTE_LEVEL_NONE:
                   iScore -= 30;
                   break;
               }

               switch (GetPlayer()->GetDiplomacyAI()->GetVictoryBlockLevel(eTargetPlayer))
               {
               case BLOCK_LEVEL_FIERCE:
                   iScore += 50;
                   break;
               case BLOCK_LEVEL_STRONG:
                   iScore += 40;
                   break;
               case BLOCK_LEVEL_WEAK:
                   iScore += 30;
                   break;
               case BLOCK_LEVEL_NONE:
                   iScore -= 15;
                   break;
               }
           }
       }
   }
 
Last edited:
Wow, this is great!

// Player Trait making routes to them valuable (Morocco) for (int i = 0; i < NUM_YIELD_TYPES; i++) { YieldTypes e = (YieldTypes) i; if (GetPlayer()->GetPlayerTraits()->GetYieldChangeIncomingTradeRoute(e) > 0) { iScore += -100; break; } } // Player Trait gives us extra routes, embargoes are bad for business (Venice) if (GetPlayer()->GetPlayerTraits()->GetNumTradeRoutesModifier() > 0) { iScore += -100; }
Kind of minor but if it is possible maybe this could be added for modded civs? So like the code could check if the player has a specific flag, and all modders would know to set that flag if their modded civ deals with trade routes.
Something like,
Code:
iScore += GetPlayer()->GetTraits()->GetTradeUASanctionWillingness()
If it is feasible and makes sense obviously, if you think it's a bad idea that's fine.

(also much more minor but sometimes += is used to apply a negative number, other times -= is used like "+= -50" vs. "-= 50". personally i think the 1st is more readable but idk)
 
Wow, this is great!


Kind of minor but if it is possible maybe this could be added for modded civs? So like the code could check if the player has a specific flag, and all modders would know to set that flag if their modded civ deals with trade routes.
Something like,
Code:
iScore += GetPlayer()->GetTraits()->GetTradeUASanctionWillingness()
If it is feasible and makes sense obviously, if you think it's a bad idea that's fine.

(also much more minor but sometimes += is used to apply a negative number, other times -= is used like "+= -50" vs. "-= 50". personally i think the 1st is more readable but idk)

I could investigate this in the future, but I don't have much experience with modding civs.

+= -50 versus -= 50 is just a style thing

Also I just noticed there's a typo in that code, should be a min instead of a max for the trade routes modifier...fixed.

(And changed it so that only the origin player's trade routes count against it; destination civ doesn't typically receive much from a trade route)
 
Last edited:
There seems to be two different camps here when it comes to gameplay. One that wants to treat it like a game in the shape of a world simulator, with winners and losers and points and the AI being aware of the concept of 'victory'. And one that wants to treat it as a simulator where the AI is just acting in their own 'in-universe' logical interest, and since the simulation can't go on forever there exist victory conditions that the human player can strive for. From looking around the forums it seems that most of the active members are part of the first camp and tend to be warmongers ( I could be way off on this ).

I prefer the second camp because otherwise diplomacy and trade and even science all go out the window toward the end of the game if you're leading. How can a peaceful trade heavy strategy ever win if you're automatically sanctioned and DOW'ed despite established relations with most of the world? In the end, I think this is a very minor issue. Because if I find myself far ahead by the modern era then I actually welcome even arbitrary aggression from the AI.

But this creates issues like this one, where it makes sense to a lot of people that the AI would attempt to sabotage the leader of the pack with sanctions or war etc. But to me it makes sense that weaker AIs would want to do the exact opposite and ally themselves with the strongest player. Then the AI would be acting like a simulator rather than a de facto opponent, which imo is the appeal of civ.

The downsides of the second camp are that runaway victories are more likely if there are fewer 'difficulties' to overcome once you are peaceful and leading the pack. To combat this I think there should still be difficulties to overcome, but realistic (within the context of the simulation) ones such as:

tech leakage: allies and even enemies automatically getting tech from you if you're way ahead in science and independent of world congress acts
culture leakage: similar to tech but modified the same way tourism is (shared ideology, open borders, etc)
higher dependence on happiness for science and growth: a complacent population is more delicate
higher unhappiness from war weariness: same as above, complacent population is more devastated by a long war, even if just defending
more responsibility to defend allies: sending money and resources during allies wars is more necessary to maintain friendship if you are far ahead of them point-wise
higher but gradual bonuses to AI: if this makes victory too easy, that's why there's a sliding difficulty scale

these are just off the top of my head now that hopefully wouldn't require a lot of new game mechanics, i'm sure there are better ones

The second camp also has a tendency to consider not being a total a-hole as sufficient diplomacy to maintain good relations. For many of my peaceful games I certainly defaulted to that thinking.

What the current system does well IMO is force the peaceful player to spend effort and resources to maintain good relations and get other civs to behave as the player wants. For those in the second camp this is realistic, as all modern superpowers spend significant resources to keep less powerful countries on their side. What it doesn't do well is show when the player isn't spending enough, and then out of nowhere some friendly AI votes to screw them over. Negative diplo modifiers like "We feel exploited by your trading practices" or "You are keeping your technological secrets from us" would help remind the peaceful player to spread the wealth around more. After all nobody likes a scrooge.

Regarding tech leakage, the player can already do this by gift or trade if tech trading is enabled. Gifting techs to non-contender AI has great benefits: you get better relations, improving their economy and military helps them become more of threat to your competitors, and it denies your competitor the gpt or luxuries they might get from trading that same tech to them.

Culture leakage could be good but I would like less passive options like gifting great works. Or a production que item that can be traded or gifted to other AIs similar to France gifting the Statue of Liberty.
 
Thanks for responding, but I don't at all agree. And even the top post addresses the fact that it doesn't matter what you do, if you are ahead, even your closest allies turn against you. That's the problem.

In the game I'm playing right now, I regularly gifted luxuries and constantly gift gpt to all the AIs and almost all of them voted to sanction me. The worst offender was Poland. Mongolia took over half of Poland's cities and I liberated 4 of them in the Industrial Era. This in addition to all the regular gifts. I captured no other cities, and I wasn't the one to declare war with Mongolia. Even they voted for my sanction and eventually declared war on me.

It's that the 'game aware' strategy of sabotaging the leader overrides all other considerations. Despite the fact that allying with me would make much more 'real world' sense.
 
Thanks for responding, but I don't at all agree. And even the top post addresses the fact that it doesn't matter what you do, if you are ahead, even your closest allies turn against you. That's the problem.

In the game I'm playing right now, I regularly gifted luxuries and constantly gift gpt to all the AIs and almost all of them voted to sanction me. The worst offender was Poland. Mongolia took over half of Poland's cities and I liberated 4 of them in the Industrial Era. This in addition to all the regular gifts. I captured no other cities, and I wasn't the one to declare war with Mongolia. Even they voted for my sanction and eventually declared war on me.

It's that the 'game aware' strategy of sabotaging the leader overrides all other considerations. Despite the fact that allying with me would make much more 'real world' sense.

I'm actually in the first camp without being a big warmonger unless it's necessary to stop an AI from winning the game. I'm fine with the way it works right now but if someone goes out of their way and really tries everything possible to be friend with the AIs and the said AIs still vote to get the player sanctioned, I can see the problem. I wouldn't be opposed to have more "real world" sense as you say it.
 
Yeah like I said earlier, I think this is a very minor issue and it doesn't really affect my enjoyment of the game. I don't at all mind the aggression and late game challenges, it's just that it doesn't make a lot of sense and overrides diplomacy and cultural aspects of the game. It turns into a war simulator rather than a civ simulator.
 
I agree that voting pattern for Poland is very strange and 'gamey'. I enjoy the game more when I can interpret AI actions in a realistic way and that one is hard to reconcile.

However both you and the OP could have used diplomats to secure nay votes. In the case of vassals you can just tell them what to vote. So I contend that the tools are there but the reason behind using them could use improvement.

FWIW in October last year I played a game as Carthage completely focused on sea trade, making about 1500 gpt just from that. Sanctions would have reduced income to about 100 gpt and loss of luxuries/happiness would have led to total collapse. Every time the sanctions vote came up I did what I mentioned before and it worked every time. I was sending up to 500 gpt to other civs through various trades and gifts. At one point I was sending 250 gpt to Venice to pay for tech purchases, and that was enough to keep them from voting for it even though I had no diplomat and had declared war on them previously to liberate a CS they purchased.
 
Yeah like I said earlier, I think this is a very minor issue and it doesn't really affect my enjoyment of the game. I don't at all mind the aggression and late game challenges, it's just that it doesn't make a lot of sense and overrides diplomacy and cultural aspects of the game. It turns into a war simulator rather than a civ simulator.

I totally agree.. the game is not living and dynamic when you know everyone in late game will sanction against you.. friends and allies should not vote like this, imo it kind of breaks the game. I dont mind if enemies and their allies votes like this every second time.

Is it possible to try the new code?
 
Back
Top Bottom