Is there a mod or a flag I could set somewhere that would make it impossible to capture city states?

smorgasborgas

Chieftain
Joined
Oct 7, 2020
Messages
68
Preface: Hi! I love this mod. It's the only video game I've played for the past 2 years and I'm not getting tired of it any time soon. This mod is incredible and I don't want my first post here to sound like a criticism.

*I turned off the flags for bribed wars and win-condition aggression because the constant war was tedious and in my opinion completely flattens the depth of the game (diplomacy, trades, allying CSs, buying WC votes, etc. goes out the window).
*With less frequent wars and the 'Unique City States' mod, CS quests and vying for allies are my favorite part of the game right now. But even peaceful leaders and leaders that have Declared Friendship with you capture your allied City States so casually that it seems pointless to try to remain allies unless they are adjacent.
*Even with gifted units they are not strong enough to defend themselves and once captured and released they are extremely vulnerable. The only way to make sure nobody can capture them without actually declaring war is to surround the CS with troops which is awkward and unrealistic.

Possible solutions, or some combination of these:

1. A flag that would make it impossible to declare war on CSs (can still bully, marriage, venice buy).
- Most straightforward but very unnatural. I'd still prefer it to the current system.
2. A WC resolution that would release all militarily captured CSs and prevent any further aggression.
-I like this one more since it wouldn't come into effect until later in the game. At least as realistic as CS sanctions. Would require that certain buildings couldn't be built in CSs (#6).
3. Make them much, much stronger. Like a 500% combat bonus for units and a huge city attack or something along those lines.
-Similar to #1 but a little bit softer, still unrealistic.
4. Being able to pay off civs to liberate captured City-States using the trade screen.
-I think this should be an option anyway but would require #6
5. Being able to make civs commit to non-aggression to City-States using the trade screen.
-This seems like a decent solution. Your weaker friends will be prevented from casually capturing CSs. It would be crazy if Canada decided to capture Puerto Rico and the US weren't able to prevent it diplomatically. (I know PR isn't a CS)
6. Make it impossible to Annex CSs, only puppeteering is allowed. This way World Wonders and National Wonders won't be lost if the CS has to be liberated.
-This might be necessary to implement other solutions. Maybe even eliminate puppeteering as well. If you conquer a CS, you just gain X amount of influence. (and the CS produces a bunch of militia to make it harder to conquer again)
7. Give more diplomatic favor with other civs for liberating CSs
-By liberating a CS you just made it possible for them to receive significant boosts to their yields. They should be happier with you.
8. Give MUCH, MUCH larger warmonger penalties for capture of city states.
-I think this is a bare minimum. It's crazy to me that a leader that captures 6 city states is still less of a warmonger than a leader that captures a very forward settled city that claims a 'native' luxury

If there is a way to achieve these things on my own, please point me to them. Thanks.
 
7. Give more diplomatic favor with other civs for liberating CSs
-By liberating a CS you just made it possible for them to receive significant boosts to their yields. They should be happier with you.
8. Give MUCH, MUCH larger warmonger penalties for capture of city states.
-I think this is a bare minimum. It's crazy to me that a leader that captures 6 city states is still less of a warmonger than a leader that captures a very forward settled city that claims a 'native' luxury

I can look into these two for sure. :)
 
Hello, nice of you to pots :)

I think I like your 3rd option the most, so if you want to tinker around with this, you can go to the file MinorBonuses.sql and change the "25" in the first parameter to a much higher number. Also, you can

"
UPDATE Defines
SET Value = '25'
WHERE Name = 'BALANCE_CS_ALLIANCE_DEFENSE_BONUS' AND EXISTS (SELECT * FROM COMMUNITY WHERE Type='COMMUNITY_CORE_BALANCE_MINORS' AND Value= 1 );
"

You can also go to CoreDefines.sql and increase the values in

INSERT INTO Defines (
Name, Value)
SELECT 'BALANCE_CS_PLEDGE_TO_PROTECT_DEFENSE_BONUS', '5';

INSERT INTO Defines (
Name, Value)
SELECT 'BALANCE_CS_PLEDGE_TO_PROTECT_DEFENSE_BONUS_MAX', '25';


Unforunately, that's where my knowledge ends. I have no idea how to for example give extra hit points or strength to walls in city states (that would be the easiest way to achieve your goal, you could buff the HP points of walls in CS to 4000 or some other absurd number and they'd never get captured), but hopefully someone else will be able to help you more.
 
There is a lua that you can implement that disables any player's ability to attack a thing, so you can just define what that thing is.

My phoenicia mod has exactly what you are looking for, it contains a snippet of lua code that specifically prevents Phoenicia from capturing city state cities.
Code:
function CSCaptureDisable(iAttackingPlayer, iAttackingUnit, attackerDamage, attackerFinalDamage, attackerMaxHP, iDefendingPlayer, iDefendingUnit, defenderDamage, defenderFinalDamage, defenderMaxHP, iInterceptingPlayer, iInterceptingUnit, interceptorDamage, iX, iY)

    local pAttacker = Players[iAttackingPlayer]
    local pDefender = Players[iDefendingPlayer]

    if not pAttacker then return end
 
    if (pDefender and pDefender:IsMinorCiv()) then
        if Map.GetPlot(iX, iY):IsCity(pDefender) then
            return true
        end
    end
return false
end
GameEvents.MustAbortAttack.Add(CSCaptureDisable)
Note: you can just lift this directly. I have already scrubbed the civ-specific tag from this
 
Last edited:
I can look into these two for sure. :)

Do we really want number 8 (higher penalties for taking out CS)?

CS somewhat exist to be an exploitable punching bag. Its a way for warmongers to conquer without incurring the penalty of conquering "someone important". I don't know if you really want to take that away from them.
 
I like the idea of being able to get friendly players to make non-aggression pacts with your CS allies with the trade screen
 
Do we really want number 8 (higher penalties for taking out CS)?

CS somewhat exist to be an exploitable punching bag. Its a way for warmongers to conquer without incurring the penalty of conquering "someone important". I don't know if you really want to take that away from them.

I was thinking more along the lines of AIs being more upset about certain City-State captures based on their own interests, not a massive increase. He has a point about warmongering being disproportional sometimes.
 
Wow, thanks everyone! If I'm understanding the effect of LifeOfBrian's suggestion, I think boosting the defense bonuses to protected and allied city states is a good short term solution. That way a CS can be captured but once it is liberated it will be much tougher.

Also I really appreciate your looking into this Recursive and PineappleDan.

I get that most of these options would really mess with any warmonger civs strategies, but currently there is no practical recourse if a physically hard to reach civ just captures like 10 city states. I can live with a weaker Mongolia in exchange for a more nuanced mid-late game.
 
Back
Top Bottom