CK3 DatabaseCrusader Kings III · 1.20.1.2 “Crozier” · unofficial
Silk & Silverout Tue, Nov 17What's free, what needs the DLC, price →

Interaction · Diplomatic actions

Offer Confederation

variesPrestigeThe AI weighs it

Ask the recipient to join with you in a Confederation.

What you need

You

To send it

To see it in the menu

  • One of these

  • If played by the AI:
  • Is a ruler
  • One of these

    • Cannot play landless rulers without having an Estate
    • or

      If

      • One of these

        • Is landed
        • or

          Your Government is a Theocratic-type Government

      Then

    • or

      All of these

      • Your liege:
        • All of these

          • Holds China
          • Government is Celestial
          • Their government has the government uses ministry budget flag
      • One of these

    • or

      Has “laamp transition” (a variable the game's script sets)
  • One of these

The character you target

To send it

To see it in the menu

  • Is a ruler
  • One of these

    • Cannot play landless rulers without having an Estate
    • or

      If

      • One of these

        • Is landed
        • or

          Government is a Theocratic-type Government

      Then

    • or

      All of these

      • Their liege:
        • All of these

          • Holds China
          • Government is Celestial
          • Their government has the government uses ministry budget flag
      • One of these

    • or

      Has “laamp transition” (a variable the game's script sets)
  • Is an Independent Ruler
  • One of these

Offer Confederation is a diplomatic character interaction in Crusader Kings III. You need: Is not imprisoned. The character you target needs: Is a ruler, Is not a Tributary, Is landed and 10 more. The AI weighs it. Reasons the AI weighs include You have True Ruler (+20), Virtuoso Arbitrator (+25), You have a reputation as a fair ruler (+20) and 67 more. It costs Prestige (varies). Patch 1.20.1.2, from game/common/character_interactions/09_mpo_interactions.txt.

for a guide, post or blog
Quick answers (3)
What are the requirements for Offer Confederation in CK3?
You: Is not imprisoned. The character you target: Is a ruler, Is not a Tributary, Is landed, Is an Independent Ruler, Does not have the Trait: Conqueror, Does not have the Trait: Greatest of Khans, Is not at war with you, Must not be Hostile due to recent Raiding, Highest held Title is at most Duchy Rank, Government must be Tribal or Nomadic, Is not a member of a Confederation, Is not imprisoned and Is at not War. (patch 1.20.1.2)
How do I get the AI to accept Offer Confederation?
The AI weighs it. Its reasons: You have True Ruler +20, Virtuoso Arbitrator +25, You have a reputation as a fair ruler +20, Previously swayed during the Iranian Intermezzo +20, You have the flame of persia Modifier +20, Cultural Acceptance, You are of a different Faith, You are of a different Faith, You are of a different Faith, You recently Waged War -40, They fought for Independence from you -100, They is part of an Isolationist Culture -50, You are Bankrupt -30, Major difference in our Tiers +10, You are Allies +50, You are their Rightful Liege +20, Encircled by your Realm +40, Their realm does not border yours -25, Their realm is distant from yours -100, Their realm is remote from yours -200, Difference in your Military Strength (max +20), Opinion of your Realm's Powerful Vassals (max +20), Your low Legitimacy -20, Your low Legitimacy -10, Your high Legitimacy +10, Your high Legitimacy +20, They is your Friend +25, They is your Best Friend +50, They is your Lover +25, They is your Soulmate +50, They is your Rival -200, They is your Nemesis -1,000, Rivalry with a Confederate -100, Nemesis is a Confederate -500, They belongs to your Dynasty +25, They belongs to your House +50, You speak the … Language +20, They is part of the Iberian Struggle and you are not -35, You are just a child -5, Your Confederation has an illegitimate Ruler -20, They is a Claimant to your Confederation -20, Ambitious -25, Paranoid -25, Arrogant -25, Fickle -15, Stubborn -15, Greedy -15, Trusting +15, Content +15, Craven +25, Your Level of Devotion, Intimidated by you, Terrified of you, The recipient is impressed by the Court Grandeur of your Diplomatic Court, Your low Legitimacy -10, Your low Legitimacy -25, Your high Legitimacy +15, Your high Legitimacy +40, Spending Herd +40, Spending Prestige +40, You are both … +50, The recipient's Culture is unrelated to yours -20, Hook used +100, Has no neighboring Ruler worth confederating against -30, Terrified by a neighboring Ruler +30, The Confederation's number of members, A Confederation of the recipient's Culture exists -100, The recipient will be forced into War -100, Your Confederates will join the recipient's Defensive War +100, Your Confederates will join the recipient's Defensive War +200, The recipient's Cultural Ethos +10, The recipient's Cultural Ethos +20, The recipient's Cultural Ethos -10, The recipient is a Herder +50, Dominance will be reduced -20, Dominance will be reduced -50, Dominance will be reduced -100, Tribal Authority will be reduced -20, Tribal Authority will be reduced -50, … Cultural Traditions +20 and Recently left your Confederation -50.
How much does Offer Confederation cost?
Prestige (varies) (patch 1.20.1.2).

Will they accept?

The AI adds these up and accepts above zero. Reasons in italics are the script's, with no label in the game.

ReasonAmount
Base-50
You have True Ruler
when
+20
Virtuoso Arbitrator
when
  • Has the trait Virtuoso Arbitrator
+25
You have a reputation as a fair ruler
when
  • Has the Modifier: Masterful Negotiator
+20
Previously swayed during the Iranian Intermezzo
when
  • The character you target: Has the opinion “Influenced” of you
+20
You have the flame of persia Modifier
when
  • You › Your dynasty:
    • has_dynasty_modifier = fp3_rekindler_of_iran_modifier
  • The character you target › Their culture: The Culture has the Iranian Cultural Pillar
+20
Cultural Acceptance
when
  • NOT = { has_same_culture_as = scope:recipient }
  • Your culture:
    • cultural_acceptance = { target = scope:recipient.culture value <= 90 }
offer_vassalage_acceptance_value
You are of a different Faith
when
  • The character you target:
    • None of these

      • Their faith is the same as that of actor
      • Their rite: Has the Pluralist Doctrine
      • Their government has the government is in steppe flag
varies
You are of a different Faith
when
  • The character you target:
    • None of these

      • Their faith is the same as that of actor
      • Your rite: Has the Pluralist Doctrine
      • Their government has the government is in steppe flag
    • Their rite: Has the Pluralist Doctrine
varies
You are of a different Faith
when
  • The character you target:
    • Their faith is not the same as that of actor
    • Their government does not have the government is in steppe flag
    • Your rite: Has the Pluralist Doctrine
    • Their rite: Has the Pluralist Doctrine
varies
You recently Waged War
when
  • No in list:
  • The character you target: Any truce holder:
-40
They fought for Independence from you
when
  • The character you target: Independence war former liege is scope:actor.top liege
-100
They is part of an Isolationist Culture
when
  • Your culture is not the target’s
  • The target’s culture: Their culture has the tradition Isolationist
-50
You are Bankrupt
when
  • root.gold <= -1
-30
Major difference in our Tiers
when
  • tier_difference = { target = scope:recipient value > 1 }
+10
You are Allies
when
  • The character you target: Is allied to you
+50
You are their Rightful Liege
when
  • is_rightful_liege_of = scope:recipient
+20
Encircled by your Realm
when
  • The character you target:
    • No land neighboring realm with tributaries owner:
    • None of these

      • Any realm county: Is coastal County
+40
Their realm does not border yours
when
  • The target’s capital province:
    • squared_distance = { target = scope:actor.capital_province value < 150000 }
  • The character you target:
    • None of these

      • Any land neighboring realm with tributaries owner:
        • One of these

          • Is you
          • or

            All of these

            • exists = scope:actor.confederation
            • is_member_of_confederation = scope:actor.confederation
          • or

            All of these

            • exists = scope:actor.confederation
            • suzerain ?= { is_member_of_confederation = scope:actor.confederation }
          • or

            suzerain ?= { this = scope:actor }
-25
Their realm is distant from yours
when
  • The target’s capital province:
    • squared_distance = { target = scope:actor.capital_province value >= 150000 }
    • squared_distance = { target = scope:actor.capital_province value < 300000 }
  • The character you target:
    • None of these

      • Any land neighboring realm with tributaries owner:
        • One of these

          • Is you
          • or

            All of these

            • exists = scope:actor.confederation
            • is_member_of_confederation = scope:actor.confederation
          • or

            All of these

            • exists = scope:actor.confederation
            • suzerain ?= { is_member_of_confederation = scope:actor.confederation }
          • or

            suzerain ?= { this = scope:actor }
-100
Their realm is remote from yours
when
  • The target’s capital province:
    • squared_distance = { target = scope:actor.capital_province value >= 300000 }
  • The character you target:
    • None of these

      • Any land neighboring realm with tributaries owner:
        • One of these

          • Is you
          • or

            All of these

            • exists = scope:actor.confederation
            • is_member_of_confederation = scope:actor.confederation
          • or

            All of these

            • exists = scope:actor.confederation
            • suzerain ?= { is_member_of_confederation = scope:actor.confederation }
          • or

            suzerain ?= { this = scope:actor }
-200
Difference in your Military Strength (max +20)varies
Opinion of your Realm's Powerful Vassals (max +20)
when
  • Your top liege: Number of powerful vassals at least 1
varies
Your low Legitimacy
when
  • has_legitimacy_flag = very_reduced_tributarization_acceptance
-20
Your low Legitimacy
when
  • has_legitimacy_flag = reduced_tributarization_acceptance
-10
Your high Legitimacy
when
  • has_legitimacy_flag = increased_tributarization_acceptance
+10
Your high Legitimacy
when
  • has_legitimacy_flag = very_increased_tributarization_acceptance
+20
They is your Friend
when
  • The character you target:
    • Has you as friend
    • Does not have you as best friend
+25
They is your Best Friend
when
  • The character you target: Has you as best friend
+50
They is your Lover
when
  • The character you target:
    • Has you as lover
    • Does not have you as soulmate
+25
They is your Soulmate
when
  • The character you target: Has you as soulmate
+50
They is your Rival
when
  • The character you target:
    • Has you as rival
    • Does not have you as nemesis
-200
They is your Nemesis
when
  • The character you target: Has you as nemesis
-1,000
Rivalry with a Confederate
when
  • root.confederation ?= { … }
-100
Nemesis is a Confederate
when
  • root.confederation ?= { … }
-500
They belongs to your Dynasty
when
  • The character you target: Is of the same dynasty as you
+25
They belongs to your House
when
  • The character you target: Is of the same house as you
+50
You speak the … Language
when
  • knows_language_of_culture = scope:recipient.culture
+20
They is part of the Iberian Struggle and you are not
when
  • None of these

    • Any character struggle:
      • is_struggle_type = iberian_struggle
  • The character you target › Any character struggle:
    • is_struggle_type = iberian_struggle
-35
You are just a child
when
  • Is under 12 years old
  • The character you target: Age more than 16
-5
Your Confederation has an illegitimate Ruler
when
-20
They is a Claimant to your Confederation
when
  • Your top liege’s primary title › The character you target:
    • has_claim_on = prev
-20
Ambitious
when
-25
Paranoid
when
-25
Arrogant
when
-25
Fickle
when
-15
Stubborn
when
-15
Greedy
when
-15
Trusting
when
+15
Content
when
+15
Craven
when
+25
Your Level of Devotion
when
  • Any character struggle:
    • has_struggle_phase_parameter = piety_level_affects_vassalage_acceptance
varies
Intimidated by you
when
  • The character you target:
    • has_dread_level_towards = { target = scope:actor level = 1 }
intimidated_external_reason_value
Terrified of you
when
  • The character you target:
    • has_dread_level_towards = { target = scope:actor level = 2 }
cowed_external_reason_value
Their opinion of you × 0.35varies
The recipient is impressed by the Court Grandeur of your Diplomatic Court
when
  • Your top liege:
    • Have a Royal Court
    • has_court_type = court_diplomatic
    • Court grandeur current level at least 1
varies
Your low Legitimacy
when
  • has_legitimacy_flag = reduced_confederation_acceptance
-10
Your low Legitimacy
when
  • has_legitimacy_flag = very_reduced_confederation_acceptance
-25
Your high Legitimacy
when
  • has_legitimacy_flag = increased_confederation_acceptance
+15
Your high Legitimacy
when
  • has_legitimacy_flag = very_increased_confederation_acceptance
+40
Spending Herd
when
  • The option “herd send option” is chosen
+40
Spending Prestige
when
  • The option “prestige send option” is chosen
+40
You are both …
when
  • Your culture is the same as that of recipient
+50
The recipient's Culture is unrelated to yours
when
  • None of these

    • You: Your culture is the same as that of recipient
  • None of these

    • Your culture › Any parent culture or above:
      • this = scope:recipient.culture
    • The target’s culture › Any parent culture or above:
      • this = scope:actor.culture
    • Your culture:
      • has_same_culture_heritage = scope:recipient.culture
-20
A scripted reason
when
-1,000
A scripted reason
when
-1,000
Hook used
when
+100
Has no neighboring Ruler worth confederating against-30
Terrified by a neighboring Ruler
when
  • The character you target › Any land neighboring realm with tributaries owner:
    • top_suzerain ?= { … }
+30
The Confederation's number of members
when
  • root.confederation ?= { … }
duchy_confederation_vassals_value
A Confederation of the recipient's Culture exists
when
  • Your culture is not the target’s
  • Any confederation: Confederation culture is scope:recipient.culture
-100
The recipient will be forced into War
when
  • is_at_war_as_defender = yes
  • Any character war:
    • primary_defender = { … }
    • is_defender = scope:actor
    • None of these

      • Any war attacker: Is allied to the target
      • Any war attacker: Is the target
      • Any war defender: Is the target
      • Any war attacker › The character you target:
        • has_truce = prev
-100
Your Confederates will join the recipient's Defensive War
when
  • The character you target:
    • is_at_war_as_defender = yes
    • Any character war:
      • Is war leader in the war against the target
      • is_defender = scope:recipient
      • None of these

        • Any war attacker: Is allied to you
        • Any war attacker: Is you
        • Any war defender: Is you
      • Defender war score less than 80
      • Defender war score at least 0
+100
Your Confederates will join the recipient's Defensive War
when
  • The character you target:
    • is_at_war_as_defender = yes
    • Any character war:
      • Is war leader in the war against the target
      • is_defender = scope:recipient
      • None of these

        • Any war attacker: Is allied to you
        • Any war attacker: Is you
        • Any war defender: Is you
      • Defender war score less than 0
+200
The recipient's Cultural Ethos
when
+10
The recipient's Cultural Ethos
when
+20
The recipient's Cultural Ethos
when
-10
The recipient is a Herder
when
  • The character you target: Government is unplayable
+50
Dominance will be reduced
when
-20
Dominance will be reduced
when
-50
Dominance will be reduced
when
-100
Tribal Authority will be reduced
when
-20
Tribal Authority will be reduced
when
-50
… Cultural Traditions
when
+20
Recently left your Confederation
when
  • The character you target: Has “left confederation” (a variable the game's script sets)
-50
Acceptance (ai_accept) (278 lines of game script)
base = -50
modifier = {
	desc = offer_vassalization_true_ruler_perk_tt
	trigger = {
		scope:actor = {
			has_perk = true_ruler_perk
		}
	}
	add = true_ruler_value
}
modifier = {
	desc = offer_vassalization_education_diplomacy_5_tt
	trigger = {
		scope:actor = {
			has_trait_with_flag = offer_vassalisation_25
		}
	}
	add = 25
}
modifier = {
	desc = event_bonus_to_vassal_accept_tt
	trigger = {
		scope:actor = {
			has_character_modifier = event_bonus_to_vassal_accept
		}
	}
	add = 20
}
modifier = {
	desc = fp3_persian_struggle_previously_swayed_tt
	trigger = {
		scope:recipient = {
			has_opinion_modifier = {
				modifier = scheme_sway_and_compelled_to_submit_opinion
				target = scope:actor
			}
		}
	}
	add = 20
}
modifier = {
	desc = fp3_rekindler_of_iran_modifier_reason
	trigger = {
		AND = {
			scope:actor = {
				dynasty ?= {
					has_dynasty_modifier = fp3_rekindler_of_iran_modifier
				}
			}
			scope:recipient = {
				culture = {
					has_cultural_pillar = heritage_iranian
				}
			}
		}
	}
	add = 20
}
modifier = {
	add = offer_vassalage_acceptance_value
	desc = cultural_acceptance_interaction_reason
	trigger = {
		scope:actor = {
			NOT = {
				has_same_culture_as = scope:recipient
			}
			culture = {
				cultural_acceptance = {
					target = scope:recipient.culture
					value <= 90
				}
			}
		}
	}
}
modifier = {
	desc = offer_vassalization_interaction_aibehavior_differentfaith_tt
	trigger = {
		scope:recipient = {
			NOR = {
				faith = scope:actor.faith
				rite = {
					rite_has_doctrine = doctrine_pluralism_pluralistic
				}
				government_has_flag = government_is_in_steppe
			}
		}
	}
	add = {
		value = -30
		if = {
			limit = {
				scope:recipient.faith = {
					faith_hostility_level = {
						target = scope:actor.faith
						value >= faith_hostile_level
					}
				}
			}
			add = -30
		}
		if = {
			limit = {
				scope:recipient.faith = {
					faith_hostility_level = {
						target = scope:actor.faith
						value >= faith_evil_level
					}
				}
			}
			add = -30
		}
	}
}
modifier = {
	desc = offer_vassalization_interaction_aibehavior_differentfaith_tt
	trigger = {
		scope:recipient = {
			NOR = {
				faith = scope:actor.faith
				scope:actor.rite = {
					rite_has_doctrine = doctrine_pluralism_pluralistic
				}
				government_has_flag = government_is_in_steppe
			}
			rite = {
				rite_has_doctrine = doctrine_pluralism_pluralistic
			}
		}
	}
	add = {
		value = -15
		if = {
			limit = {
				scope:recipient.faith = {
					faith_hostility_level = {
						target = scope:actor.faith
						value >= faith_hostile_level
					}
				}
			}
			add = -15
		}
		if = {
			limit = {
				scope:recipient.faith = {
					faith_hostility_level = {
						target = scope:actor.faith
						value >= faith_evil_level
					}
				}
			}
			add = -15
		}
	}
}
modifier = {
	desc = offer_vassalization_interaction_aibehavior_differentfaith_tt
	trigger = {
		scope:recipient = {
			NOR = {
				faith = scope:actor.faith
				government_has_flag = government_is_in_steppe
			}
			scope:actor.rite = {
				rite_has_doctrine = doctrine_pluralism_pluralistic
			}
			rite = {
				rite_has_doctrine = doctrine_pluralism_pluralistic
			}
		}
	}
	add = {
		value = -10
		if = {
			limit = {
				scope:recipient.faith = {
					faith_hostility_level = {
						target = scope:actor.faith
						value >= faith_hostile_level
					}
				}
			}
			add = -10
		}
		if = {
			limit = {
				scope:recipient.faith = {
					faith_hostility_level = {
						target = scope:actor.faith
						value >= faith_evil_level
					}
				}
			}
			add = -10
		}
	}
}
modifier = {
	desc = offer_vassalization_interaction_aibehavior_recent_war_tt
	trigger = {
		scope:recipient = {
			any_truce_holder = {
				this = scope:actor
			}
		}
		scope:actor = {
			NOT = {
				has_purchased_truce_with_char = {
					TARGET = scope:recipient
				}
			}
		}
	}
	add = -40
}
modifier = {
	desc = offer_confederation_independence_war_tt
	trigger = {
		scope:recipient = {
			exists = var:independence_war_former_liege
			var:independence_war_former_liege = scope:actor.top_liege
		}
	}
	add = -100
}
modifier = {
	desc = isolationist_reason
	trigger = {
		NOT = {
			scope:actor.culture = scope:recipient.culture
		}
		scope:recipient.culture = {
			has_cultural_tradition = tradition_isolationist
		}
	}
	add = -50
}
modifier = {
	desc = bankrupt_reason
	trigger = {
		scope:actor.gold <= -1
	}
	add = -30
}
modifier = {
	desc = offer_vassalization_interaction_aibehavior_widetitletier_tt
	trigger = {
		scope:actor = {
			tier_difference = {
				target = scope:recipient
				value > 1
			}
		}
	}
	add = 10
}
modifier = {
	desc = offer_vassalization_interaction_aibehavior_allied_tt
	trigger = {
		scope:recipient = {
			is_allied_to = scope:actor
		}
	}
	add = 50
}
modifier = {
	desc = offer_vassalization_interaction_aibehavior_rightfulliegetitleholder_tt
	trigger = {
		scope:actor = {
			is_rightful_liege_of = scope:recipient
		}
	}
	add = 20
}
modifier = {
	desc = offer_vassalization_interaction_a
# … (cut here; the rest is in the file)

As written in game/common/character_interactions/09_mpo_interactions.txt.

What happens

If they accept

  • If

    • The character you target:
      • Is a ruler
      • One of these

        • Cannot play landless rulers without having an Estate
        • or

          If

          • One of these

            • Is landed
            • or

              Government is a Theocratic-type Government

          Then

        • or

          All of these

          • Their liege:
            • All of these

              • Holds China
              • Government is Celestial
              • Their government has the government uses ministry budget flag
          • One of these

        • or

          Has “laamp transition” (a variable the game's script sets)

    Then

    • If

      • The character you target:
        • is_at_war_as_defender = yes
        • Any character war:
          • Is war leader in the war against the target
          • is_defender = scope:recipient

      Then

      • Every in list:
        • add_defender = scope:actor
      • If

        • root.confederation ?= { … }

        Then

    • If

      Then

      Otherwise

    • If

      • The character you target: Government is Nomadic

      Then

      • The character you target:
    • If

      • The character you target: Is played by a person

      Then

    • The character you target › If government is Nomadic: After a few years, Confederates may leave their Confederation or Migrate away
    • You: Event mpo_interactions_events.0001
    • If

      • You:
        • is_at_war_as_defender = yes
        • Any character war:
          • primary_defender = { … }
          • is_defender = scope:actor
          • None of these

            • Any war attacker: Is allied to the target
            • Any war attacker: Is the target
            • Any war defender: Is the target
            • Any war attacker › The character you target:
              • has_truce = prev

      Then

      • You:
        • Every character war:
          • Only some of them (the filter is in the script below)
          • add_defender = scope:recipient
        • If

          • None of these

            • The character you target:
              • is_at_war_as_defender = yes
              • Any character war:
                • Is war leader in the war against the target
                • is_defender = scope:recipient
                • … (more in the script below)
    • … (more in the script below)

If they refuse

Options when sending

  • Use a Hook
  • Gift with Herd
  • Impress with Prestige

Events it fires: mpo_interactions_events.0001, mpo_interactions_events.0004

• the game's own tooltip text · ◦ our reading of the script line · code the script where neither exists

Who can use it and sees it (is_available, is_shown) (36 lines of game script)
is_available = OR = {
	government_has_flag = government_is_tribal
	government_has_flag = government_is_nomadic
}
trigger_if = {
	limit = {
		is_ai = yes
	}
	OR = {
		is_confederation_member = yes
		AND = {
			has_character_flag = forming_confederation
			highest_held_title_tier < tier_kingdom
			is_independent_ruler = yes
		}
	}
	age >= 6
}
is_playable_character = yes
OR = {
	is_independent_ruler = yes
	confederation ?= {
		is_house_based = no
	}
}
is_shown = scope:recipient = {
	is_playable_character = yes
	is_independent_ruler = yes
	OR = {
		government_has_flag = government_is_tribal
		government_has_flag = government_is_nomadic
	}
	NOT = {
		this = scope:actor
	}
}

As written in game/common/character_interactions/09_mpo_interactions.txt.

Can be sent when (is_valid…) (23 lines of game script)
trigger_if = {
	limit = {
		scope:actor = {
			is_confederation_member = no
		}
	}
	custom_tooltip = {
		text = forming_confederation_tt
		scope:actor = {
			has_character_flag = forming_confederation
		}
	}
}
scope:actor = {
	is_imprisoned = no
}
scope:recipient = {
	valid_confederation_member_trigger = {
		CHARACTER = scope:actor
	}
	is_imprisoned = no
	is_at_war = no
}

As written in game/common/character_interactions/09_mpo_interactions.txt.

Effects (on_send, on_accept, on_decline) (238 lines of game script)
on_accept = if = {
	limit = {
		scope:recipient = {
			is_playable_character = yes
		}
	}
	scope:actor = {
		if = {
			limit = {
				has_character_flag = forming_confederation
			}
			remove_character_flag = forming_confederation
			if = {
				limit = {
					is_ai = no
				}
				add_achievement_global_variable_effect = {
					VARIABLE = mpo_confedup_achievement_unlocked
					VALUE = yes
				}
			}
		}
	}
	if = {
		limit = {
			scope:recipient = {
				is_at_war_as_defender = yes
				any_character_war = {
					is_war_leader = scope:recipient
					is_defender = scope:recipient
				}
			}
		}
		scope:recipient = {
			every_character_war = {
				limit = {
					is_war_leader = scope:recipient
					is_defender = scope:recipient
				}
				add_to_list = recipient_wars
			}
		}
		every_in_list = {
			list = recipient_wars
			save_scope_as = recipient_war
			primary_attacker = {
				save_scope_as = attacker
			}
			add_defender = scope:actor
			hidden_effect = {
				scope:actor.confederation ?= {
					every_confederation_member = {
						limit = {
							NOR = {
								is_attacker_in_war = scope:recipient_war
								is_defender_in_war = scope:recipient_war
								is_at_war_with = scope:recipient
								is_allied_to = scope:attacker
								is_imprisoned_by = scope:recipient
								is_at_war_with = scope:recipient
							}
						}
						scope:recipient_war = {
							add_defender = prev
						}
					}
				}
			}
		}
		if = {
			limit = {
				scope:actor.confederation ?= {
					any_confederation_member = {
						NOR = {
							is_attacker_in_war = scope:recipient_war
							is_defender_in_war = scope:recipient_war
							this = scope:actor
							is_at_war_with = scope:recipient
							is_allied_to = scope:attacker
							is_imprisoned_by = scope:recipient
							is_at_war_with = scope:recipient
						}
					}
				}
			}
			scope:actor = {
				custom_tooltip = confederates_joining_recipient_war_tt
			}
		}
	}
	scope:actor = {
		save_scope_as = confederation_offerer
	}
	scope:recipient = {
		save_scope_as = confederation_accepter
	}
	if = {
		limit = {
			scope:actor = {
				is_confederation_member = no
			}
		}
		scope:actor = {
			custom_tooltip = create_confederation_tt
			custom_tooltip = confederation_defensive_wars_tt
			custom_tooltip = unlock_leave_confederation_interaction_tt
			if = {
				limit = {
					government_has_flag = government_is_nomadic
				}
				add_character_modifier = {
					modifier = mpo_confederation_member_modifier
					years = 5
				}
				capital_county ?= {
					change_county_fertility = major_county_fertility_level_gain
				}
			}
		}
		scope:recipient = {
			offer_confederation_accepter_effect = yes
		}
	}
	else = {
		scope:actor.confederation = {
			save_scope_as = confederation
		}
		show_as_tooltip = {
			scope:recipient = {
				offer_confederation_accepter_effect = yes
			}
		}
	}
	if = {
		limit = {
			scope:recipient = {
				government_has_flag = government_is_nomadic
			}
		}
		scope:recipient = {
			add_character_modifier = {
				modifier = mpo_confederation_member_modifier
				years = 5
			}
			capital_county ?= {
				change_county_fertility = major_county_fertility_level_gain
			}
		}
	}
	if = {
		limit = {
			scope:recipient = {
				is_ai = no
			}
		}
		scope:recipient = {
			custom_tooltip = confederation_raiding_attacking_tt
			if = {
				limit = {
					government_has_flag = government_is_nomadic
				}
				custom_tooltip = confederation_restrictions_warning_tt
			}
			else = {
				custom_tooltip = confederation_restrictions_tribe_warning_tt
			}
		}
	}
	scope:recipient = {
		if = {
			limit = {
				government_has_flag = government_is_nomadic
			}
			custom_tooltip = confederation_migrating_leaving_warning_tt
		}
	}
	scope:actor = {
		trigger_event = mpo_interactions_events.0001
	}
	if = {
		limit = {
			scope:actor = {
				is_at_war_as_defender = yes
				any_character_war = {
					primary_defender = {
						OR = {
							this = scope:actor
							AND = {
								exists = scope:actor.confederation
								is_member_of_confederation = scope:actor.confederation
							}
						}
					}
					is_defender = scope:actor
					NOR = {
						any_war_attacker = {
							is_allied_to = scope:recipient
						}
						any_war_attacker = {
							this = scope:recipient
						}
						any_war_defender = {
							this = scope:recipient
						}
						any_war_attacker = {
							scope:recipient = {
								has_truce = prev
							}
						}
					}
				}
			}
		}
		scope:actor = {
			every_character_war = {
				limit = {
					primary_defender = {
						OR = {
							this = scope:actor
							AND = {
								exists = scope:actor.confederation
								is_member_of_confederation = scope:actor.confederation
							}
						}
					}
					is_defender = scope:actor
					NOR = {
						any_war_attacker = {
							is_allied_to = scope:recipient
						}
						any_war_attacker = {
							this = scope:recipient
						}
						any_war_defender = {
							this = scope:recipient
						}
						any_war_attacker = {
# … (cut here; the rest is in the file)

As written in game/common/character_interactions/09_mpo_interactions.txt.

Category
Diplomatic actions
Cost: Prestige
varies
Again on the same character
after 3 years
In the menu
main list
ID
offer_confederation_interaction

Source: game/common/character_interactions/09_mpo_interactions.txt and the English localisation, Crusader Kings III 1.20.1.2. “You” is the character who sends it (scope:actor, or a puppet acting for you); “the character you target” is the recipient.

Spotted a mistake on this page?