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

Break Betrothal

No costAccepted automatically

What you need

You

  • One of these

    • Your betrothed:
      • All of these

        • Is betrothed
        • If

          a check the game hides

          Then

          • Is played by the AI
          • One of these

            • All of these

              • Is a child of the target
              • Is a vassal (or below) of the target
              • NOT = { matchmaker = { is_parent_of = prev this != scope:recipient } }
            • or

              All of these

              • Not all of these

                • 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

                    tgp_is_any_minister = { }
                  • or

                    Has “laamp transition” (a variable the game's script sets)
              • Is a direct vassal of the target
    • or

      The character you target:
      • All of these

        • Is betrothed
        • If

          a check the game hides

          Then

          • Is played by the AI
          • One of these

            • All of these

              • Is a child of you
              • Is a vassal (or below) of you
              • NOT = { matchmaker = { is_parent_of = prev this != scope:puppet_or_actor } }
            • or

              All of these

              • Not all of these

                • 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

                    tgp_is_any_minister = { }
                  • or

                    Has “laamp transition” (a variable the game's script sets)
              • Is a direct vassal of you
    • or

      The target’s betrothed:
      • All of these

        • Is betrothed
        • If

          a check the game hides

          Then

          • Is played by the AI
          • One of these

            • All of these

              • Is a child of you
              • Is a vassal (or below) of you
              • NOT = { matchmaker = { is_parent_of = prev this != scope:puppet_or_actor } }
            • or

              All of these

              • Not all of these

                • 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

                    tgp_is_any_minister = { }
                  • or

                    Has “laamp transition” (a variable the game's script sets)
              • Is a direct vassal of you

The character you target

Break Betrothal is a diplomatic character interaction in Crusader Kings III. The character you target needs: Does not have a Strong Hook on you. Accepted automatically. Patch 1.20.1.2, from game/common/character_interactions/00_marriage_interactions.txt.

for a guide, post or blog
Quick answers (2)
What are the requirements for Break Betrothal in CK3?
The character you target: Does not have a Strong Hook on you. (patch 1.20.1.2)
Will the AI accept Break Betrothal?
Yes: it is accepted automatically.

Will they accept?

The other character has no choice: the game accepts it automatically.

What happens

Effects

  • The character you target: Event marriage_interaction.0020
  • The rejected betrothed:
    • break_betrothal = scope:rejecting_betrothed
  • If

    • None of these

      • The rejecting betrothed:
        • One of these

          • One of these

          • or

            Has one of the traits: Eunuch, Beardless Eunuch, Monk, Military Order Member
          • or

            All of these

            • Not all of these

              • Game rule set to “Accepted”
              • Their rite: The rite has Same-sex relationships are fully accepted
            • sex_same_as = scope:rejected_betrothed
      • The rejected betrothed:
        • One of these

          • One of these

          • or

            Has one of the traits: Eunuch, Beardless Eunuch, Monk, Military Order Member
          • or

            All of these

            • Not all of these

              • Game rule set to “Accepted”
              • Their rite: The rite has Same-sex relationships are fully accepted
            • sex_same_as = scope:rejecting_betrothed
    • None of these

      • The rejecting betrothed: Has “promised grand wedding by” (a variable the game's script sets)
      • The rejected betrothed: Has “promised grand wedding by” (a variable the game's script sets)

    Then

    • If

      • One of these

      • One of these

        • The rejected betrothed:
          • One of these

            • Is close family of you
            • or

              All of these

              • exists = dynasty
              • exists = scope:puppet_or_actor.dynasty
              • Is of the same dynasty as you
        • or

          The rejecting betrothed:
          • One of these

            • Is close family of you
            • or

              All of these

              • exists = dynasty
              • exists = scope:puppet_or_actor.dynasty
              • Is of the same dynasty as you
        • or

          You:
          • yields_alliance = { candidate = scope:rejecting_betrothed target = scope:rejected_betrothal_owner target_candidate = scope:rejected_betrothed }

      Then

      Else if

      • One of these

      • One of these

        • The rejected betrothed:
          • One of these

            • Is close family of you
            • or

              All of these

              • exists = dynasty
              • exists = scope:puppet_or_actor.dynasty
              • Is of the same dynasty as you
        • or

          The rejecting betrothed:
          • One of these

            • Is close family of you
            • or

              All of these

              • exists = dynasty
              • exists = scope:puppet_or_actor.dynasty
              • Is of the same dynasty as you
        • or

          You:
          • yields_alliance = { candidate = scope:rejecting_betrothed target = scope:rejected_betrothal_owner target_candidate = scope:rejected_betrothed }

      Then

      Else if

      • One of these

      • One of these

        • The rejected betrothed:
          • One of these

            • Is close family of you
            • or

              All of these

              • exists = dynasty
              • exists = scope:puppet_or_actor.dynasty
              • Is of the same dynasty as you
        • or

          The rejecting betrothed:
          • One of these

            • Is close family of you
            • or

              All of these

              • exists = dynasty
              • exists = scope:puppet_or_actor.dynasty
              • Is of the same dynasty as you
        • or

          You:
          • yields_alliance = { candidate = scope:rejecting_betrothed target = scope:rejected_betrothal_owner target_candidate = scope:rejected_betrothed }

      Then

      Else if

      • One of these

        • The rejected betrothed: Highest held Title is exactly Duchy Rank
        • or

          The rejected betrothal owner: Highest held Title is exactly Duchy Rank
      • One of these

        • The rejected betrothed:
          • One of these

            • Is close family of you
            • or

              All of these

              • exists = dynasty
              • exists = scope:puppet_or_actor.dynasty
              • Is of the same dynasty as you
        • or

          The rejecting betrothed:
          • One of these

            • Is close family of you
            • or

              All of these

              • exists = dynasty
              • exists = scope:puppet_or_actor.dynasty
              • Is of the same dynasty as you
        • or

          … (more in the script below)
    • … (more in the script below)
  • … (more in the script below)

Events it fires: marriage_interaction.0020, marriage_interaction.0001, clan.1002

• 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) (17 lines of game script)
is_shown = OR = {
	scope:puppet_or_actor.betrothed ?= {
		break_betrothal_valid_target_trigger = {
			CHARACTER = scope:recipient
		}
	}
	scope:recipient = {
		break_betrothal_valid_target_trigger = {
			CHARACTER = scope:puppet_or_actor
		}
	}
	scope:recipient.betrothed ?= {
		break_betrothal_valid_target_trigger = {
			CHARACTER = scope:puppet_or_actor
		}
	}
}

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

Can be sent when (is_valid…) (112 lines of game script)
scope:recipient = {
	NOT = {
		has_strong_hook = scope:puppet_or_actor
	}
}
custom_description = {
	text = break_betrothal_hook_used
	object = scope:recipient
	trigger_if = {
		limit = {
			scope:recipient.betrothed ?= {
				break_betrothal_valid_target_trigger = {
					CHARACTER = scope:puppet_or_actor
				}
			}
			exists = scope:recipient.var:hook_used_for_betrothal
		}
		scope:recipient.var:hook_used_for_betrothal = {
			this != scope:recipient.betrothed
		}
	}
}
custom_description = {
	text = break_betrothal_hook_used
	object = scope:recipient
	trigger_if = {
		limit = {
			scope:recipient.betrothed ?= {
				break_betrothal_valid_target_trigger = {
					CHARACTER = scope:puppet_or_actor
				}
			}
			exists = scope:recipient.betrothed.var:hook_used_for_betrothal
		}
		scope:recipient.betrothed.var:hook_used_for_betrothal = {
			this != scope:recipient
		}
	}
}
custom_description = {
	text = break_betrothal_hook_used
	object = scope:recipient
	trigger_if = {
		limit = {
			scope:recipient = {
				OR = {
					any_courtier = {
						is_betrothed = yes
						betrothed = scope:puppet_or_actor
						liege = scope:recipient
						var:hook_used_for_betrothal ?= {
							this = scope:puppet_or_actor
						}
					}
					any_child = {
						is_betrothed = yes
						betrothed = scope:puppet_or_actor
						OR = {
							is_playable_character = no
							target_is_liege_or_above = scope:recipient
						}
						NOT = {
							matchmaker = {
								is_parent_of = prev
								this != scope:puppet_or_actor
							}
						}
						var:hook_used_for_betrothal ?= {
							this = scope:puppet_or_actor
						}
					}
				}
			}
		}
		always = no
	}
}
custom_description = {
	text = break_betrothal_gwedding_ongoing
	trigger_if = {
		limit = {
			OR = {
				scope:recipient = {
					has_been_promised_grand_wedding = yes
				}
				scope:recipient.betrothed ?= {
					has_been_promised_grand_wedding = yes
				}
			}
		}
		NOR = {
			scope:recipient.involved_activity ?= {
				has_activity_type = activity_wedding
				OR = {
					special_guest:spouse_1 ?= scope:recipient
					special_guest:spouse_2 ?= scope:recipient
					special_guest:spouse_1 ?= scope:recipient.betrothed
					special_guest:spouse_2 ?= scope:recipient.betrothed
				}
			}
			scope:recipient.betrothed.involved_activity ?= {
				has_activity_type = activity_wedding
				OR = {
					special_guest:spouse_1 ?= scope:recipient
					special_guest:spouse_2 ?= scope:recipient
					special_guest:spouse_1 ?= scope:recipient.betrothed
					special_guest:spouse_2 ?= scope:recipient.betrothed
				}
			}
		}
	}
}

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

Effects (on_send, on_accept, on_decline) (238 lines of game script)
on_accept = scope:secondary_actor = {
	save_scope_as = rejecting_betrothed
	betrothed = {
		save_scope_as = rejected_betrothed
	}
}
scope:rejecting_betrothed.var:promised_grand_wedding_by ?= {
	save_scope_as = promising_host
}
scope:recipient = {
	trigger_event = marriage_interaction.0020
}
show_as_tooltip = {
	scope:rejected_betrothed = {
		break_betrothal = scope:rejecting_betrothed
	}
}
scope:rejected_betrothed = {
	if = {
		limit = {
			matchmaker = {
				this != scope:rejected_betrothed
				is_close_or_extended_family_of = scope:rejected_betrothed
			}
		}
		matchmaker = {
			save_scope_as = rejected_betrothal_owner
		}
	}
	else = {
		save_scope_as = rejected_betrothal_owner
	}
}
if = {
	limit = {
		has_proper_reason_to_break_betrothal_trigger = no
		NOR = {
			scope:rejecting_betrothed = {
				has_been_promised_grand_wedding = yes
			}
			scope:rejected_betrothed = {
				has_been_promised_grand_wedding = yes
			}
		}
	}
	if = {
		limit = {
			OR = {
				scope:rejected_betrothed = {
					highest_held_title_tier > tier_empire
				}
				scope:rejected_betrothal_owner = {
					highest_held_title_tier > tier_empire
				}
			}
			cost_prestige_for_break_betrothal_trigger = yes
		}
		scope:puppet_or_actor = {
			add_prestige = monumental_prestige_loss
		}
	}
	else_if = {
		limit = {
			OR = {
				scope:rejected_betrothed = {
					highest_held_title_tier = tier_empire
				}
				scope:rejected_betrothal_owner = {
					highest_held_title_tier = tier_empire
				}
			}
			cost_prestige_for_break_betrothal_trigger = yes
		}
		scope:puppet_or_actor = {
			add_prestige = massive_prestige_loss
		}
	}
	else_if = {
		limit = {
			OR = {
				scope:rejected_betrothed = {
					highest_held_title_tier = tier_kingdom
				}
				scope:rejected_betrothal_owner = {
					highest_held_title_tier = tier_kingdom
				}
			}
			cost_prestige_for_break_betrothal_trigger = yes
		}
		scope:puppet_or_actor = {
			add_prestige = major_prestige_loss
		}
	}
	else_if = {
		limit = {
			OR = {
				scope:rejected_betrothed = {
					highest_held_title_tier = tier_duchy
				}
				scope:rejected_betrothal_owner = {
					highest_held_title_tier = tier_duchy
				}
			}
			cost_prestige_for_break_betrothal_trigger = yes
		}
		scope:puppet_or_actor = {
			add_prestige = medium_prestige_loss
		}
	}
	else_if = {
		limit = {
			OR = {
				scope:rejected_betrothed = {
					highest_held_title_tier = tier_county
				}
				scope:rejected_betrothal_owner = {
					highest_held_title_tier = tier_county
				}
			}
			cost_prestige_for_break_betrothal_trigger = yes
		}
		scope:puppet_or_actor = {
			add_prestige = minor_prestige_loss
		}
	}
	else_if = {
		limit = {
			OR = {
				scope:rejected_betrothed = {
					highest_held_title_tier = tier_barony
				}
				scope:rejected_betrothal_owner = {
					highest_held_title_tier = tier_barony
				}
			}
			cost_prestige_for_break_betrothal_trigger = yes
		}
		scope:puppet_or_actor = {
			add_prestige = miniscule_prestige_loss
		}
	}
}
if = {
	limit = {
		has_proper_reason_to_break_betrothal_trigger = no
		OR = {
			scope:rejecting_betrothed = {
				has_been_promised_grand_wedding = yes
			}
			scope:rejected_betrothed = {
				has_been_promised_grand_wedding = yes
			}
		}
	}
	scope:puppet_or_actor = {
		break_grand_wedding_betrothal_effect = yes
	}
}
else = {
	if = {
		limit = {
			has_proper_reason_to_break_betrothal_trigger = no
		}
		scope:rejected_betrothed = {
			show_as_tooltip = {
				add_opinion = {
					target = scope:puppet_or_actor
					modifier = broke_betrothal_opinion
				}
			}
		}
		if = {
			limit = {
				scope:puppet_or_actor != scope:rejected_betrothal_owner
				scope:rejected_betrothal_owner != scope:rejected_betrothed
			}
			scope:rejected_betrothal_owner = {
				show_as_tooltip = {
					add_opinion = {
						target = scope:puppet_or_actor
						modifier = broke_betrothal_opinion
					}
				}
			}
		}
	}
	if = {
		limit = {
			scope:puppet_or_actor != scope:rejected_betrothal_owner
		}
		scope:rejected_betrothal_owner = {
			trigger_event = marriage_interaction.0001
		}
	}
	else = {
		hidden_effect = {
			scope:rejecting_betrothed = {
				break_betrothal = scope:rejected_betrothed
			}
		}
	}
}
if = {
	limit = {
		has_proper_reason_to_break_betrothal_trigger = no
	}
	if = {
		limit = {
			scope:rejected_betrothed != scope:puppet_or_actor
			scope:rejected_betrothed = {
				any_close_or_extended_family_member = {
					this != scope:rejected_betrothal_owner
					count >= 1
				}
			}
		}
		if = {
			limit = {
				OR = {
					scope:rejected_betrothed = {
						has_been_promised_grand_wedding = yes
					}
					scope:rejecting_betrothed = {
						has_been_promised_grand_wedding = yes
					}
				}
			}
			scope:rejected_betrothed = {
				every_close_or_extended_family_member = {
					limit = {
						this != scope:rejected_betrothal_owner
					}
					custom = all_family_members
					add_opinion = {
						target = scope:puppet_or_actor
						modifier = broke_betrothal_grand_wedding_opinion
						opinion =
# … (cut here; the rest is in the file)

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

Category
Diplomatic actions
In the menu
under More…
ID
break_betrothal_interaction

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