You put this very well and is essentially how it think it should be. Defensive alliances only (this is what that mod ended up doing), just make it impossible for larger kingdoms to make them.I can see these may not all be easy problems to solve.
On the one hand, immediately having wars/peace declared when an alliance breaks up or is formed kind of makes sense. The other factions may be opportunistic in declaring a war on a faction that suddenly lost its ally, or suddenly want to sue for peace because now they’re facing a much bigger combined enemy. Also, renegotiating tribute in these situations also makes sense.
But I can see that this might destabilize the war/peace systems and be bad for gameplay if it all happens too suddenly, especially with multiple alliances to consider.
If it’s too complicated to implement (and balance!) full alliances, what about a version with reduced scope specifically designed with the goal of reducing snowballing? Where the only alliance possible is a defensive pact against a stronger enemy: i.e. a strong faction (Faction Strong) declares war on a weak neighbour (Faction Weak). Faction Weak would then start looking for a third faction to form a defensive pact with (Faction Pact), to help it fight off the attacker. Faction Pact would only agree to enter this pact if:
The only effects of the defensive pact would be:
- Faction Strong is the aggressor
- The difference in strength between Faction Strong and Faction Weak is past a certain threshold
- The difference in strength between Faction Strong and Faction Pact is also past a certain threshold (i.e. this would be a mechanic to get two or more weaker factions to gang up on a faction that is starting to snowball)
- Faction Pact has an active border with Faction Strong (i.e. they would be worried that they’re next if they don’t do something now)
- Faction Pact is currently at peace with Faction Weak
- Faction Pact can be convinced to declare war on Faction Strong per the usual war/peace score voting, but instead considering the combined strength of Faction Weak and Faction Pact instead of the individual faction strength. This would bring all the factors that are normally considered in war/peace declarations into play and so hopefully prevent most of the possible weird unbalanced scenarios.
This would essentially simulate an alliance of necessity only, against a larger nearby aggressor, with the two factions in the defensive pact otherwise still distrusting each other.
- Both factions in the pact declare war against Faction Strong. They would not coordinate against any other faction (allowing the war/peace scores and tribute calculations to behave normally otherwise). If another faction does decide to complicate things by declaring war against a faction in the defensive pact, that faction in the pact would prioritize the war against Faction Strong in war/peace declarations and so likely seek peace with that new faction.
- Faction Strong can only declare peace if they declare peace with both factions in the defensive pact at the same time (treat them as a single faction in Faction Strong's war/peace calculation), but maybe using the individual factions strengths to calculate tribute scores to avoid problems when the defensive pact ends.
Consideration could be given to the defensive pact lasting maybe one season or so past the declaration of peace. This would only affect the war/peace calculations of Faction Strong because the defensive pact is only formed against them, and would not take effect if Faction Weak or Faction Pact were the aggressor.
Armies helping each other can be optional, if that creates issues. The main idea is to force a snowballing faction to take on a more powerful combined enemy more often to help balance things out. This is similar to the “top dog” factor in the war/peace declarations, but maybe implementing this as a separate mechanic gives another lever to pull when trying to balance that. I'm thinking the top dog factor might easily be lost in all the other factors that go into the war/peace declarations.
Thoughts?
I think some potential negatives should be:
- a daily influence cost to all clans in both alliance kingdoms (maybe scaled with clan level and make default bases different for weak and helper faction)
- if there was a tribute before hand, it is renegotiated based on the current strength so weaker faction pays stronger. Should also be renegotiated at break of alliance (could go up or down based on new strength)
- Once entering the alliance, the kingdom that wants to make peace against the aggressor faction has to pay for their tribute and a portion of their allied factions tribute (medium faction has to help weak faction to get out of war), they should fight it out against the aggressor until they are "winning" together or the loser/quitter (one who choses to make peace) pays for it.
Honestly this mod did it very well. Just going through the change log takes you along the journey and the issues they ran into and changes made, I'm going to summarize what I've basically taken away from them and provide the key change notes for each update of it.
I'll be editing this post as I go through the versions, join me on this journey everyone. Ok its finished, I've underlined the major points from the key takeaways.
It was first just a mod to activate the Declare War / Propose peace button in the Diplo screen back when it wasn't active and the AI completely controlled W/P. Then they added:
- configuration on how much it would cost to make war and peace.
- added configurable cooldowns for declaring war and making peace,
- a messenger button that lets you pay influence to open a dialog with another kingdom (I want this)
- a config on how long the messenger would take
- let player kingdoms control their own W/P decs. No more AI auto W/P decs (this isn't an issue anymore)
- It also made it to where you could choose to accept peace or not from other kingdoms. (I want this)
Version 1.0.0
- Allows the player to use the Declare War / Propose Peace buttons in the Diplomacy Screen.
- Added MBOptionsScreen support.
- Added configurable costs with both scaling and flat influence cost flavors. These are configurable in the Mod Options screen.
- Added checks to prevent the player from declaring war or proposing peace when they do not have enough influence.
- Added checks to prevent the player from making peace when there is an active story quest that requires war between the factions.
1.0.1 they added in configurable cooldowns for declaring war and making peace
Version 1.0.1
- Added configurable cooldowns for declaring war and making peace.
- Updated the description of EnableInfluenceCostsForDiplomacyActions setting.
- Added debug messaging in case the diplomacy action throws an exception.
1.0.2 and 1.0.3 they made some fixes and display improvements
Version 1.0.2
- Fixing initialization issue with the cooldown manager.
- Updated messages to display the required duration for war/peace cooldowns.
Version 1.0.3
- Added influence cost indicator below the diplomacy action button.
1.0.4 they added in a messenger button that lets you pay influence to open a dialog with another kingdom. I like this, honestly should be able to do it for anyone, companion or lord.
Version 1.0.4
- Updated display for influence cost.
- Added "Send Messenger" button. This allows you to open a dialogue with a kingdom leader. This has a configurable influence cost.
1.0.5 it was a compatability/crashes fix
Version 1.0.5
- Removed a Harmony patch for MakePeaceAction in favor of a CampaignBehavior event listener. Should improve compatibility with other mods.
- Added MBOptionsScreen as a SubModule for the mod. This should prevent some crashes and issues with the mod menu.
1.0.6 it added a config on how long the messenger would take and let player kingdoms control their own P/W decs. It also made it to where you could choose to accept peace from other kingdoms.
1.0.7 - 1.0.10 it was just fixes and compatability changesVersion 1.0.6
- Added configurable delay on messengers arriving at opposing faction leader.
- Stop random declaration of war and peace from your kingdom. When another kingdom wants to make peace, you'll get a pop-up box with a decision and some money for war reparations!
- Reorganized the mod options page.
Version 1.0.10
Version 1.0.9
- Experimental branch moved to stable.
- Fixed a broken string on the Mod Options page.
Version 1.0.8
- String localization fixes (thanks reduce5419!).
- Updated to MCM 2.0.10. This should resolve some crashes but a duplicate "Mod Options" menu may appear.
- Added preliminary localization support.
- Updated MBOptionScreen to MCM 2.0.8
- Fixed bug that allowed sending messengers without enough influence.
- Attempt to fix bug that could prevent saving while messengers are en route.
Version 1.0.7
- Bannerlord e1.3.0 compatibility
- Minor bug fixes
For their 1.1 updates they:
- added in a war exhaustion mechanic with configurations
- forced the AI to follow the cooldowns for war and peace.
- They added in sending messengers to any character via the encyclopedia page (I want this)
- the ability for the player to claim settlement without vote.
- they added a war exhaustion display to the diplo page (good idea if you use this)
- added the ability to send messengers to NPC's without parties. (I want this)
- added in applying all costs, conditions, and cooldowns for declaring war or proposing peace to the AI kingdoms.
- added in Peace proposals due to war exhaustion now include war reparations and influence costs. (Pre-tribute system)
1.1.0 they added in a war exhaustion mechanic with configurations and forced the AI to follow the cooldowns for war and peace
Version 1.1.0
- Added "war exhaustion" mechanic to the mod. Consider either removing "Configurable War Attrition" or disabling war exhaustion in the mod settings as they are similar mechanics.
- Now creates save data. Messengers, declare war cooldowns, war exhaustion, and more will now be saved!
- AI factions now use the same "declare war" cooldowns as the player. No longer make peace with a faction just to have them declare war immediately!
- Added a cooldown for rejected peace proposals.
- Various string/localization fixes.
1.1.1 - 1.1.2 they made some fixes and additional war configs
Version 1.1.1
Version 1.1.2
- Added two mod versions - one for e1.2.1 and one for e1.3.
- Attempt to fix bug where declare war cooldowns could be circumvented by AI factions.
- Opposing kingdoms now respect both declare war and minimum war duration (propose peace) cooldowns.
- Added more war exhaustion configurations.
1.1.3 they added in sending messengers to any character via the encyclopedia page and the ability for the player to claim settlement without vote.
Version 1.1.3
- Added the ability to send messengers to any character via the Encyclopedia Page.
- Added the ability for a player to claim player-taken settlements without a vote.
- Updated messenger strings. Will need localization updates.
- Fixed some missing localization data.
- Updated method of enabling/disabling war exhaustion. Now requires a game restart.
1.1.4 -1.1.5 it was just crash fixes
Version 1.1.4
Version 1.1.5
- Resolved crashes with messengers in lord persuasions and mercenary faction conversations.
- Changed the position of the Send Messenger button in the encyclopedia.
- Mitigated some crashes related to messengers to invalid targets and messengers arriving while the player is in a settlement or siege.
- Mitigated war exhaustion crashes with modded kingdoms that don't have a stringId.
- Fixed location links in encyclopedia pages.
1.1.6 they added a war exhaustion display to the diplo page.
Version 1.1.6
- Added war exhaustion display to the diplomacy page.
- Fixed crash where there was no last attacking party when a settlement changed hands.
- Fixed rare crash where a companion had a grievance and a messenger arrived simultaneously.
1.1.7 added the ability to send messengers to NPC's without parties.
Version 1.1.7
- Added null-safety for kingdom stringIds to all war exhaustion operations. Should prevent some crashes for people with mods that create or modify kingdoms.
- Allowed the player to send messengers to NPC's without parties. NPC's without parties will wear civilian clothes.
1.1.8 added in applying all costs, conditions, and cooldowns for declaring war or proposing peace to the AI kingdoms
1.1.9 added in Peace proposals due to war exhaustion now include war reparations and influence costs.Version 1.1.8
- Moved from using stringId to MBGUID internal Id for keeping track of war exhaustion values. This should resolve crashes related to other mods' created kingdoms.
- All costs, conditions, and cooldowns for declaring war or proposing peace now apply to AI kingdoms.
- Added war reparations costs to making peace for the player. These costs will appear on the Diplomacy screen.
- Added Bannerlord Beta e1.4 support and discontinued Bannerlord e1.21 updates.
Version 1.1.9
- Peace proposals due to war exhaustion now include war reparations and influence costs.
- Fixed declare war cooldown issues.
- Fixed issue in war exhaustion migration where records of nonexistent kingdoms would cause a crash.
- Lowered default influence cost for messengers to 10.
For their 1.2 updates they just made bug fixes and made sure features like messengers to wanderers worked.
Version 1.2.0
Version 1.2.1
- Resolved issue where sieges weren't contributing to war exhaustion.
Version 1.2.2
- Added toggleable debug messages for war exhaustion applied to the player kingdom.
- Updated sync activities to only execute when loading a save.
- Added various null-safety measures to prevent crashes.
Version 1.2.3
- Allow messengers to wanderers again.
- Fixing issue where peace inquiries would crash when war exhaustion is disabled.
- Fixing crash in conversation with lords under certain conditions when the banner investigation quest is active.
- Fixed missing string localization id.
For 1.3 updates they:
- added in Granting fiefs interface into the encyclopedia and the Kingdom management clan page (I want this)
- Added maximum war exhaustion threshold for declaring war.
- Added war exhaustion display on kingdom diplomacy page for kingdoms at peace.
- Prevented messengers from causing crashes when a player is in an army or siege.
Version 1.3.0
Version 1.3.1
- Added a Grant Fief user interface accessible via the Encyclopedia and Kingdom Management Clan page.
- Added support for Bannerlord e1.4.1
Version 1.3.2
- Fixed broken expel and support events on the kingdom clan page.
- Added maximum war exhaustion threshold for declaring war.
- Added war exhaustion display on kingdom diplomacy page for kingdoms at peace.
- Fixed bug where messenger events would duplicate.
Version 1.3.3
- Player-captured settlements should work properly again.
- Clans can no longer call for votes on wars or peaces that are invalid.
- Prevented messengers from causing crashes when a player is in an army or siege.
- Fixed bug where influence wasn't deducted from vassal players who proposed peace.
Update 1.4 is where they finally added alliances, safe to say I want all of these:
- Added alliances to the game. These can be initiated by AI factions and by the player through the Kingdom Diplomacy screen.
- Hints added to the buttons on the Kingdom Diplomacy Page rather than showing messages on screen.
- Added allies section to the faction encyclopedia page.
- Added war and alliance displays to the Kingdom Diplomacy page.
- Made alliances optional via mod setting. This will gradually remove AI alliances from your game as well.
- New condition for making peace where a player siege cannot be active between the factions. Resolves a bad state.
- Add relation gain to clan granted fiefs and relation penalty with other clans.
- Improved the claim fief behavior so that it appears right away.
Version 1.4.0
Version 1.4.1
- Added alliances to the game. These can be initiated by AI factions and by the player through the Kingdom Diplomacy screen.
- Hints added to the buttons on the Kingdom Diplomacy Page rather than showing messages on screen.
Version 1.4.2
- Upgrade to Mod Configuration Menu v3.
- Resolve crash that occurred when a kingdom had no fiefs.
Version 1.4.3
- Added allies section to the faction encyclopedia page.
- Added war and alliance displays to the Kingdom Diplomacy page.
- Made alliances optional via mod setting. This will gradually remove AI alliances from your game as well.
- Fix bug where minimum alliance duration returned to default.
- New condition for making peace where a player siege cannot be active between the factions. Resolves a bad state.
Version 1.4.4
- Add relation gain to clan granted fiefs and relation penalty with other clans.
- Improved the claim fief behavior so that it appears right away.
- Fixed crash when a player leaves a kingdom from the Diplomacy screen and keeps their fiefs.
Version 1.4.5
- Fixing broken Break Alliance and Propose buttons on the Kingdom Diplomacy page.
- Removing check from AI faction leaders because influence costs are no longer assessed against them. This may make war declarations more common.
- Upgraded to MCM v3.1.9. Should resolve compatibility issues with Modlib and various Mod Options bugs.
Update 1.5 adds:
- Added Non-Aggression pact agreements.
- Messengers can be paid for with gold rather than influence if not in a kingdom
- Add button to donate gold to a clan via the Clan menu in the Kingdom Management screen.
- Added influence balancing, including influence decay and corruption.
- Added the ability to cancel arrived messengers.
- Added expansionism score, used in diplomatic agreement scoring. Added expansionism diplomacy penalty
- Updated the faction behavior for forming alliances. Rebalanced alliance costs.
- Adding the ability to usurp the throne of a kingdom.
- Alliance war declarations now follow war conditions more strictly.
- Updated alliances to be defensive only.
- Prevent the player from granting fiefs that are pending election.
- War cooldowns are now represented as non-aggression pacts that form when peace is declared.
- Added variable travel time to messengers based on distance.
- Changing send messenger functionality from influence to gold cost.
Version 1.5.0
Version 1.5.1
- Added Non-Aggression pact agreements. Currently only available to players, but will be rolled out to AI factions soon.
- Messengers can be paid for with gold rather than influence if not in a kingdom.
- Added tabbed display to the Kingdom Diplomacy screen.
- Fixed event listeners holding onto ViewModel references causing memory leak and potential crashes.
- Added missing string localization metadata.
Version 1.5.2
- Add button to donate gold to a clan via the Clan menu in the Kingdom Management screen.
- Added influence balancing, including influence decay and corruption.
- Increased default war exhaustion decay per day from 1 to 2.
Version 1.5.3
- Added the ability to cancel arrived messengers.
Version 1.5.4
- Allow AI factions to form non-aggression pacts.
- Added expansionism score, used in diplomatic agreement scoring.
- Added tooltips to the Form Alliance and Form Pact buttons for better visibility.
- Updated the faction behavior for forming alliances.
- AI clans will manage their corruption by bartering their fiefs to other clans in the kingdom.
- Rebalanced alliance costs.
Version 1.5.5
- Adding the ability to usurp the throne of a kingdom. Still needs balancing.
- Added expansionism diplomacy penalty.
- Added expansionism mod options.
- Added Non-Aggression pacts section to the faction encyclopedia page.
- Fixed bug where AI factions were able to declare war on allied factions. Whoops!
- Alliance war declarations now follow war conditions more strictly.
- Added info message for when two factions form a non-aggression pact.
- Added days remaining tooltip to non-aggression pacts in the diplomacy screen.
- Diplomatic costs are now bypassed when joining an ally in war.
- Various string localization fixes.
Version 1.5.6
- Added clan support visibility near the usurp throne button.
- Fixed crash on load experienced by users with a bad save state.
- Added main storyline protection mod option.
- Added check to determine if the player has the authority to perform certain diplomatic actions.
- Prevent player from breaking main storyline quests using usurp.
Version 1.5.7
- Added a UI to the donate gold button.
- Added relation gain to donating gold.
- Resolved crashes when using mods that bypass the main storyline.
- Fixed alignment of buttons on the Kingdom Management clan page.
Version 1.5.8
- Updated alliances to be defensive only.
- Prevent the player from granting fiefs that are pending election.
- Stop counting unassigned fiefs for corruption calculations.
- Will now clean up support kingdom quests when advancing the story by usurping a throne.
- Fixed inverse expansionism effect on diplomacy.
- Updated expansionism score to update without an event to trigger.
- Updated gold donation rep gains to round more favorably to the player.
- Fixed string localization problem with the Expel button.
- Added missing string localizations for gold donation.
Version 1.5.9
- War cooldowns are now represented as non-aggression pacts that form when peace is declared.
- Added variable travel time to messengers based on distance.
- Changing send messenger functionality from influence to gold cost.
- Automatically refresh the encyclopedia page after granting a fief.
- Removed relation gain when donating gold to your own clan.
- Fixed missing diplomacy header string localization.
Version 1.5.10
- Fixed crashes when sending a messenger to a target doesn't have a location.
- Removing leader cost conditions for AI kingdom decision proposals. More kingdom proposals for leaders with low influence (including the player). Should make wars more common in passive games.
- Removed redundant declare war cooldown condition. (no behavior change)
Version 1.5.11
- Updates for compatibility with e1.4.3.
- Fixed e1.4.2 crashes on startup due to update.
- Fixed bug where mercenary players could claim fiefs.
- Fixed crash in encyclopedia when hero has null clan. (1.4.3)
- Fixed broken grant fief button in Kingdom Clan page. (1.4.3)
- Fixed clans automatically selling fiefs to the player clan to reduce their corruption.
- Clans no longer consider trading fiefs to a clan under mercenary service.
Last edited: