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

Interaction · Vassal actions

Swear Fealty

No costThe AI weighs it

Ask the recipient to become your Liege

What you need

You

To send it

  • Is at not War
  • Also needed: not imprisoned

To see it in the menu

  • Is landed
  • Is an Independent Ruler
  • You are not a member of a Confederation
  • Your government does not have the cannot be vassal or liege flag
  • root.highest_held_title_tier < scope:recipient.highest_held_title_tier

The character you target

To send it

  • Their government is not Adventurer
  • Their government is not unplayable

To see it in the menu

Swear Fealty is a vassal character interaction in Crusader Kings III. You need: Is not imprisoned and Is at not War. The character you target needs: Their government is not Adventurer and Their government is not unplayable. The AI weighs it. Reasons the AI weighs include You … of the you Tier (-10), Major difference in our Tiers (+20), They is your Rightful Liege (+25) and 15 more. Patch 1.20.1.2, from game/common/character_interactions/00_character_interactions.txt.

for a guide, post or blog
Quick answers (2)
What are the requirements for Swear Fealty in CK3?
You: Is not imprisoned and Is at not War. The character you target: Their government is not Adventurer and Their government is not unplayable. (patch 1.20.1.2)
How do I get the AI to accept Swear Fealty?
The AI weighs it. Its reasons: You are of a different Faith, You … of the you Tier -10, Major difference in our Tiers +20, They is your Rightful Liege +25, Their realm is distant from yours -15, Their realm is remote from yours -25, They is your Rival -10, They is your Nemesis -100, They belongs to your Dynasty +10, Cultural Acceptance -5, You speak the … Language +5, They is a Claimant to … -15, Religious Taxation, Low Feudal Obligations -40, High Feudal Obligations +40, Religious Exemption, The recipient was cowed by an imperial visit +10, The recipient rules a Confederation and shares your Culture +100, You should use Submit to the Great Khan Decision -150, You refused to be transferred to the recipient -75 and The recipient renounced suzerainty over you -200.

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 are of a different Faith
when
  • None of these

    • Your faith is the same as that of recipient
    • Your rite: Has the Pluralist Doctrine
varies
You … of the you Tier
when
-10
Major difference in our Tiers
when
  • tier_difference = { target = scope:recipient value > 1 }
+20
They is your Rightful Liege
when
  • The character you target:
    • is_rightful_liege_of = scope:actor
+25
Their realm is distant from yours
when
  • No neighboring top liege realm owner:
  • If is not landed:
    • None of these

      • Your capital county’s holder: Is you or your liege
  • Your capital province:
    • squared_distance = { target = scope:recipient.capital_province value < 200000 }
-15
Their realm is remote from yours
when
  • No neighboring top liege realm owner:
  • If is not landed:
    • None of these

      • Your capital county’s holder: Is you or your liege
  • Your capital province:
    • squared_distance = { target = scope:recipient.capital_province value >= 200000 }
-25
They is your Rival
when
  • The character you target:
    • Has you as rival
    • Does not have you as nemesis
-10
They is your Nemesis
when
  • The character you target: Has you as nemesis
-100
They belongs to your Dynasty
when
  • The character you target: Is of the same dynasty as you
+10
Cultural Acceptance
when
  • NOT = { has_same_culture_as = scope:recipient }
  • Your culture:
    • cultural_acceptance = { target = scope:recipient.culture value < 50 }
-5
You speak the … Language
when
  • knows_language_of_culture = scope:recipient.culture
+5
They is a Claimant to …
when
  • Your primary title › The character you target:
    • has_claim_on = prev
-15
Their personality (AI values: greed 0.75)varies
Their opinion of you × 0.5varies
Religious Taxation
when
varies
Low Feudal Obligations
when
-40
High Feudal Obligations
when
+40
Religious Exemption
when
  • Your Government is Clan
  • The option “religious exemption clan” is chosen
varies
The recipient was cowed by an imperial visit+10
The recipient rules a Confederation and shares your Culture
when
+100
You should use Submit to the Great Khan Decision
when
  • The character you target:
    • Highest held Title is at least Empire Rank
    • Any owned story:
      • One of these

        • story_type = story_mongol_invasion
        • or

          story_type = story_greatest_of_khans
-150
You refused to be transferred to the recipient-75
The recipient renounced suzerainty over you-200
Acceptance (ai_accept) (290 lines of game script)
base = 50
modifier = {
	desc = offer_vassalization_interaction_aibehavior_differentfaith_tt
	trigger = {
		scope:actor = {
			NOR = {
				faith = scope:recipient.faith
				rite = {
					rite_has_doctrine = doctrine_pluralism_pluralistic
				}
			}
		}
	}
	add = {
		value = -25
		if = {
			limit = {
				scope:actor.faith = {
					faith_hostility_level = {
						target = scope:recipient.faith
						value >= faith_hostile_level
					}
				}
			}
			add = -10
		}
		if = {
			limit = {
				scope:actor.faith = {
					faith_hostility_level = {
						target = scope:recipient.faith
						value >= faith_evil_level
					}
				}
			}
			add = -25
		}
	}
}
modifier = {
	desc = offer_fealty_interaction_aibehavior_hightier_tt
	trigger = {
		scope:actor = {
			highest_held_title_tier >= tier_kingdom
		}
	}
	add = -10
}
modifier = {
	desc = offer_vassalization_interaction_aibehavior_widetitletier_tt
	trigger = {
		scope:actor = {
			tier_difference = {
				target = scope:recipient
				value > 1
			}
		}
	}
	add = 20
}
modifier = {
	desc = offer_vassalization_interaction_aibehavior_rightfulvassaltitleholder_tt
	trigger = {
		scope:recipient = {
			is_rightful_liege_of = scope:actor
		}
	}
	add = 25
}
modifier = {
	desc = offer_vassalization_interaction_aibehavior_distantrealm_tt
	trigger = {
		scope:actor = {
			NOT = {
				any_neighboring_top_liege_realm_owner = {
					this = scope:recipient
				}
			}
			trigger_if = {
				limit = {
					is_landed = no
				}
				NOT = {
					capital_county.holder = {
						target_is_same_character_or_above = scope:actor
					}
				}
			}
			capital_province = {
				squared_distance = {
					target = scope:recipient.capital_province
					value < 200000
				}
			}
		}
	}
	add = -15
}
modifier = {
	desc = offer_vassalization_interaction_aibehavior_remoterealm_tt
	trigger = {
		scope:actor = {
			NOT = {
				any_neighboring_top_liege_realm_owner = {
					this = scope:recipient
				}
			}
			trigger_if = {
				limit = {
					is_landed = no
				}
				NOT = {
					capital_county.holder = {
						target_is_same_character_or_above = scope:actor
					}
				}
			}
			capital_province = {
				squared_distance = {
					target = scope:recipient.capital_province
					value >= 200000
				}
			}
		}
	}
	add = -25
}
modifier = {
	desc = offer_vassalization_interaction_aibehavior_rival_tt
	trigger = {
		scope:recipient = {
			has_relation_rival = scope:actor
			NOT = {
				has_relation_nemesis = scope:actor
			}
		}
	}
	add = -10
}
modifier = {
	desc = offer_vassalization_interaction_aibehavior_nemesis_tt
	trigger = {
		scope:recipient = {
			has_relation_nemesis = scope:actor
		}
	}
	add = -100
}
modifier = {
	desc = offer_vassalization_interaction_aibehavior_dynasty_tt
	trigger = {
		scope:recipient = {
			dynasty = scope:actor.dynasty
		}
	}
	add = 10
}
modifier = {
	add = -5
	desc = cultural_acceptance_interaction_reason
	trigger = {
		scope:actor = {
			NOT = {
				has_same_culture_as = scope:recipient
			}
			culture = {
				cultural_acceptance = {
					target = scope:recipient.culture
					value < 50
				}
			}
		}
	}
}
modifier = {
	add = 5
	desc = speaks_same_language_interaction_reason
	trigger = {
		scope:actor = {
			knows_language_of_culture = scope:recipient.culture
		}
	}
}
modifier = {
	desc = offer_vassalization_interaction_aibehavior_claimant_tt
	trigger = {
		scope:actor.primary_title = {
			scope:recipient = {
				has_claim_on = prev
			}
		}
	}
	add = -15
}
ai_value_modifier = {
	ai_greed = 0.75
	min = 0
}
opinion_modifier = {
	who = scope:recipient
	opinion_target = scope:actor
	multiplier = 0.5
}
modifier = {
	add = {
		value = -10
		if = {
			limit = {
				scope:recipient = {
					has_trait = zealous
				}
			}
			add = -30
		}
		else_if = {
			limit = {
				scope:recipient = {
					has_trait = cynical
				}
			}
			add = 30
		}
	}
	scope:actor = {
		government_has_flag = government_is_feudal
	}
	scope:religious_taxation = yes
	desc = CONTRACT_RELIGIOUS_TAXATION_REASON
}
modifier = {
	add = -40
	scope:actor = {
		government_has_flag = government_is_feudal
	}
	scope:low_obligations = yes
	desc = CONTRACT_LOW_TAXES_REASON
}
modifier = {
	add = 40
	scope:actor = {
		government_has_flag = government_is_feudal
	}
	scope:high_obligations = yes
	desc = CONTRACT_HIGH_TAXES_REASON
}
modifier = {
	add = {
		value = -10
		if = {
			limit = {
				scope:recipient = {
					has_trait = zealous
				}
			}
			add = -30
		}
		else_if = {
			limit = {
				scope:recipient = {
					has_trait = cynical
				}
			}
			add = 30
		}
	}
	scope:actor = {
		government_has_flag = government_is_clan
	}
	scope:religious_exemption_clan = yes
	desc = CONTRACT_RELIGIOUS_EXEMPTION_REASON
}
modifier = {
	add = 10
	desc = cowed_from_visit_interaction_reason
	trigger = {
		scope:actor = {
			has_character_flag = cowed_increased_vassalization_acceptance
		}
	}
}
modifier = {
	add = 100
	desc = CONFEDERATION_CULTURE_REASON
	scope:recipient = {
		is_confederation_member = yes
		culture = {
			this = scope:actor.culture
		}
	}
# … (cut here; the rest is in the file)

As written in game/common/character_interactions/00_character_interactions.txt.

What happens

If they accept

If they refuse

Options when sending

  • Low Feudal Obligations
  • Normal Feudal Obligations
  • High Feudal Obligations
  • Religious Taxation
  • Religious Exemption
  • No Exemption

Events it fires: char_interaction.0010, char_interaction.0011

• 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) (12 lines of game script)
is_available = is_landed = yes
top_liege ?= this
is_confederation_member = no
NOT = {
	government_has_flag = cannot_be_vassal_or_liege
}
is_shown = scope:recipient = {
	this != scope:actor
	is_landed = yes
	top_liege ?= this
}
scope:actor.highest_held_title_tier < scope:recipient.highest_held_title_tier

As written in game/common/character_interactions/00_character_interactions.txt.

Can be sent when (is_valid…) (23 lines of game script)
scope:actor = {
	is_imprisoned = no
	is_at_war = no
}
scope:recipient = {
	custom_description = {
		text = offer_fealty_neighboring_condition
		subject = scope:recipient
		OR = {
			any_neighboring_and_across_water_top_liege_realm_owner = {
				this = scope:actor
			}
			any_held_title = {
				is_de_jure_liege_or_above_target = scope:actor.capital_barony
			}
		}
	}
	NOR = {
		government_has_flag = government_is_landless_adventurer
		government_has_flag = government_is_holy_order
		government_has_flag = government_is_mercenary
	}
}

As written in game/common/character_interactions/00_character_interactions.txt.

Effects (on_send, on_accept, on_decline) (96 lines of game script)
on_accept = offer_fealty_interaction_effect = yes
scope:actor = {
	trigger_event = char_interaction.0010
	if = {
		limit = {
			government_has_mechanic = administrative
			scope:recipient = {
				NOT = {
					government_has_mechanic = administrative
				}
			}
		}
		custom_tooltip = will_change_from_administrative_tt
		custom_tooltip = will_lose_administrative_government_type_tt
	}
	if = {
		limit = {
			scope:recipient = {
				is_confederation_member = yes
			}
		}
		if = {
			limit = {
				government_has_flag = government_is_nomadic
			}
			add_character_modifier = {
				modifier = mpo_confederation_member_modifier
				years = 5
			}
			every_vassal_or_below = {
				limit = {
					highest_held_title_tier >= tier_county
					government_has_flag = government_is_nomadic
				}
				add_character_modifier = {
					modifier = mpo_confederation_member_modifier
					years = 5
				}
			}
		}
		add_character_flag = {
			flag = new_confederate
			years = 3
		}
		every_vassal_or_below = {
			limit = {
				highest_held_title_tier >= tier_county
			}
			add_character_flag = {
				flag = new_confederate
				years = 3
			}
		}
	}
	suzerain ?= {
		if = {
			limit = {
				this != scope:actor
				this != scope:recipient
			}
			add_opinion = {
				modifier = tributary_ceased_payments_opinion
				target = scope:actor
			}
		}
	}
}
scope:recipient = {
	if = {
		limit = {
			has_imprisonment_reason = scope:actor
		}
		consume_imprisonment_reasons = scope:actor
	}
	if = {
		limit = {
			has_revoke_title_reason = scope:actor
		}
		consume_revoke_title_reason = scope:actor
	}
	if = {
		limit = {
			has_banish_reason = scope:actor
		}
		consume_banish_reasons = scope:actor
	}
	if = {
		limit = {
			has_execute_reason = scope:actor
		}
		consume_execute_reasons = scope:actor
	}
}
on_decline = scope:actor = {
	trigger_event = char_interaction.0011
}

As written in game/common/character_interactions/00_character_interactions.txt.

Category
Vassal actions
In the menu
under More…
ID
offer_fealty_interaction

Source: game/common/character_interactions/00_character_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?