It turns out that territorial expansion penalty is amazingly easy to mod - not just to turn it off, but even to reverse.
No esf modding here - it's fresh campaign after taking one province.
The root cause of mass confusion is that DBEditor simply ignores db files it doesn't understand instead of displaying some indicator of their existence. Now I don't know anything about Windows programming so I wrote my own DB editor in Ruby (more like schema autodetector + tsv mass import/export), and there it was - ultimate control over campaign AI diplomacy.
To allow everyone else to do this, attached is manually updated DB.xsd with information about some of these new tables.
The most important one is diplomacy_attitudes_tables. Fields are:
- String - factor name
- Int32 - limit
- Int32 - change per turn
- Int32 - initial change
There's only one limit not two (min, max), and as far as I can tell it is upper/lower limit depending on sign of change-per-turn parameter, possibly leading to a surprise. So 0 limit and positive drift means effect can only be 0 or negative; 0 limit and negative drift means effect can be 0 or positive.
Some examples:
- (alliance, 80,1,30) - initial alliance gets you +30, increasing by one per turn until maxing out at +80.
- (third_party_assassination, 0, 1, -5) - having your agent detected in assassination attempt makes your relationship with everyone worse by -5 per accident. Penalty will keep drifting by one point per turn until hitting 0 limit.
- (assassination, 0, 2, -50) - much worse penalties against primary target - it's a separate effect
- (war, -200, -2, -140) - war initial penalty is -140, but instead of being reduced until 0, it keeps getting worse until reaching -200. This might be one of the reasons why AI so stubornly insists on not ending long dormant wars. Something like (0, 2, -140) would resnore much needed sanity here.
- (war_dragged_by_ally, -130, -2, -70) - allies are less annoyed than country directly attacked.
- (peace, 0, 2, 120) - ending a war nearly restores neutral relationship, getting AI to agree is a different matter altogether.
- (annexed_territory, 0, 1, -30) - this is the biggest failure of ETW diplomacy - go ahead and replace it with (0,0,0) to get rid of it altogether, or reduce it to something sane like (0, 2, -10). Big penalty but rapid return to normal like (0, 5, -30) would make sense as well. A very interesting experiment would be reversing it - screenshot comes from game at (100, -5, 50) - these values are testing only, but positive rapidly decreasing territorial expansion factor might change ETW from long futile wars to series of rapid opportunistic wars of opportunity and rapidly realigning network of alliances. I'm probably dreaming here, but fixing this is a necessary step.
- (government_type, 0, 2, 0) - I'm not sure if limit does anything here, 2 is how quickly same government type relationships get changed following revolution.
Actual values are in diplomatic_relations_government_type_tables:
- String - government type 1
- String - government type 2
- Int32 - initial value after revolution
- Int32 - final value
I've seen this table used before (used as in "filled with zeroes"), but it's only interesting in combination with diplomacy_attitudes_tables. If you put very big value of government_type factor in it, relationships of post-revolutionary governments will behave sanely. I think it works for both positive and negative changes equally, but somebody should test it first.
Or you could put high initial value for all government combination (again with big attenuation) - to model everybody giving a lot of benefit of doubt to the new regime even if they hated the old one. No matter what goes here, attenuation must be a lot higher than in vanilla.
Another small one diplomatic_relations_religion_tables:
- String - religion 1
- String - religion 2
- Int32 - diplomatic relationships
- Float - religious unrest per 1% of such combination
Unfortunately this diplomatic factor is not obviously usable - values you get at start of campaign are in esf, and there's no way to change religion mid-game to make it use new values. There might be a trick if you dig deeper.
Religious unrest is pretty cool to mod, 0.5 means 50 points of unrest for 100%-wrong-religion territory.
There's a lot more fresh stuff I found in pack files but let's just start with this.