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

Ask for Pardon

No costAccepted automatically in some cases; otherwise the AI weighs it

Ask your Top Liege to pardon your Crimes to clear any Imprisonment Reasons, Banishment Reasons, Title Revocation Reasons or Execution Reasons targeting you

What you need

You

To send it

  • Is not at war with the target
  • Is not imprisoned by the target

To see it in the menu

  • You:
    • Is an Independent Ruler
    • Any liege or above:
      • One of these

        • has_imprisonment_reason = scope:actor
        • or

          has_banish_reason = scope:actor
        • or

          has_execute_reason = scope:actor
        • or

          has_revoke_title_reason = scope:actor
  • One of these

    • root.top_liege ?= scope:recipient
    • or

      The character you target:
      • top_liege ?= scope:actor.top_liege
      • Holds Ministry of Justice

Ask for Pardon is a vassal character interaction in Crusader Kings III. You need: Is not at war with the target and Is not imprisoned by the target. Accepted automatically in some cases; otherwise the AI weighs it. Reasons the AI weighs include Your Crime warrants Banishment (-20), Your Crime warrants Title Revocation (-30) and Your Crime warrants Execution (-40). Patch 1.20.1.2, from game/common/character_interactions/00_vassal_interactions.txt.

for a guide, post or blog
Quick answers (2)
What are the requirements for Ask for Pardon in CK3?
You: Is not at war with the target and Is not imprisoned by the target. (patch 1.20.1.2)
How do I get the AI to accept Ask for Pardon?
Accepted automatically in some cases; otherwise the AI weighs it. Its reasons: Your Crime warrants Banishment -20, Your Crime warrants Title Revocation -30, Your Crime warrants Execution -40 and … Opinion of ….

Will they accept?

Accepted automatically when:

  • They use their Hook on …

Otherwise 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
Your Crime warrants Banishment
when
  • The character you target:
    • has_banish_reason = scope:actor
    • NOT = { has_execute_reason = scope:actor }
    • NOT = { has_revoke_title_reason = scope:actor }
-20
Your Crime warrants Title Revocation
when
  • The character you target:
    • has_revoke_title_reason = scope:actor
    • NOT = { has_execute_reason = scope:actor }
-30
Your Crime warrants Execution
when
  • The character you target:
    • has_execute_reason = scope:actor
-40
… Opinion of …varies
Acceptance (ai_accept) (35 lines of game script)
base = -50
modifier = {
	scope:recipient = {
		has_banish_reason = scope:actor
		NOR = {
			has_execute_reason = scope:actor
			has_revoke_title_reason = scope:actor
		}
	}
	desc = AI_BANISHMENT_REASON_MODIFIER
	add = -20
}
modifier = {
	scope:recipient = {
		has_revoke_title_reason = scope:actor
		NOT = {
			has_execute_reason = scope:actor
		}
	}
	desc = AI_REVOKE_TITLE_REASON_MODIFIER
	add = -30
}
modifier = {
	scope:recipient = {
		has_execute_reason = scope:actor
	}
	desc = AI_EXECUTE_REASON_MODIFIER
	add = -40
}
opinion_modifier = {
	who = scope:recipient
	opinion_target = scope:actor
	multiplier = 1
	desc = AI_OPINION_REASON
}

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

What happens

If they accept

  • You:
    • Every liege or above:
      • If

        • has_imprisonment_reason = scope:puppet_or_actor

        Then

        • consume_imprisonment_reasons = scope:puppet_or_actor
      • If

        • has_banish_reason = scope:puppet_or_actor

        Then

        • consume_banish_reasons = scope:puppet_or_actor
      • If

        • has_execute_reason = scope:puppet_or_actor

        Then

        • consume_execute_reasons = scope:puppet_or_actor
      • If

        • has_revoke_title_reason = scope:puppet_or_actor

        Then

        • consume_revoke_title_reason = scope:puppet_or_actor
    • Stress and fulfillment impact: by trait: Stubborn +20
  • If

    • Never
    • You: Has a usable Hook on the target

    Then

    • You: Use a Hook on the target
  • You:
    • If

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

      Then

      • If

        • The character you target:
          • One of these

            • Their liege:
              • has_extra_criminal_reason_against_trigger = { CRIMINAL = scope:recipient }
            • or

              Is family of you

        Then

        Otherwise

        • If government uses Influence:
          • change_influence = { value = minor_influence_gain multiply = scope:recipient.highest_held_title_tier }
  • Event vassal_interaction.0030
  • The character you target:
  • If

    • You: Government is Clan
    • The character you target: Government is Clan
    • Your house is the target’s
    • If

      • You are not the target

      Then

      • You are not the target

    Then

    • Your house:
      • add_unity_value = { … }

    Else if

    • No
    • You: Government is Clan
    • Your house: Has you as house head
    • One of these

      • All of these

        • exists = scope:recipient.house
        • Your house is not the target’s
      • or

        The character you target: Is Lowborn

    Then

    • Your house:
      • add_unity_value = { … }

When it is accepted automatically

If they refuse

  • The character you target: … declined your plea for pardon
  • If

    • The character you target: Government is Clan
    • You: Government is Clan
    • The target’s house is your
    • If

      • You are not the target

      Then

      • The target is not you

    Then

    • The target’s house:
      • add_unity_value = { … }

    Else if

    • No
    • The character you target: Government is Clan
    • The target’s house: Has the target as house head
    • One of these

      • All of these

        • exists = scope:actor.house
        • The target’s house is not your
      • or

        You: Is Lowborn

    Then

    • The target’s house:
      • add_unity_value = { … }

Options when sending

  • Use a Hook

Events it fires: vassal_interaction.0030, char_interaction.0240

• 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) (10 lines of game script)
is_shown = ask_for_pardon_available_trigger = {
	ACTOR = scope:actor
}
OR = {
	scope:actor.top_liege ?= scope:recipient
	scope:recipient = {
		top_liege ?= scope:actor.top_liege
		has_title = title:e_minister_of_justice
	}
}

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

Can be sent when (is_valid…) (8 lines of game script)
scope:actor = {
	NOT = {
		is_at_war_with = scope:recipient
	}
	NOT = {
		is_imprisoned_by = scope:recipient
	}
}

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

Effects (on_send, on_accept, on_decline) (73 lines of game script)
on_accept = ask_for_pardon_interaction_effect = yes
scope:actor = {
	trigger_event = vassal_interaction.0030
}
scope:recipient = {
	if = {
		limit = {
			culture = {
				has_cultural_parameter = pardoning_gives_prestige
			}
		}
		add_prestige = minor_prestige_gain
	}
	add_merit_if_relevant_effect = {
		MERIT = minor_merit_value
	}
}
add_clan_unity_interaction_effect = {
	CHARACTER = scope:actor
	TARGET = scope:recipient
	VALUE = minor_unity_gain
	DESC = clan_unity_pardon_granted.desc
	REVERSE_NON_HOUSE_TARGET = no
}
hidden_effect = {
	if = {
		limit = {
			fp3_struggle_involves_one_supporter_and_one_detractor = {
				FIRST = scope:actor
				SECOND = scope:recipient
			}
			scope:recipient = {
				any_character_struggle = {
					involvement = involved
					phase_has_catalyst = catalyst_grants_pardon_supporter_detractor
					is_secondary_character_involvement_involved_trigger = {
						CHAR = scope:actor
					}
				}
			}
		}
		scope:recipient = {
			every_character_struggle = {
				involvement = involved
				activate_struggle_catalyst = {
					catalyst = catalyst_grants_pardon_supporter_detractor
					character = scope:recipient
				}
				log_debug_variable_for_persian_struggle_effect = {
					VAR = concession_catalyst_grants_pardon_supporter_detractor
				}
			}
		}
	}
}
on_decline = scope:recipient = {
	send_interface_toast = {
		type = event_toast_effect_bad
		title = ask_for_pardon_interaction_decline_toast
		left_icon = scope:actor
		custom_tooltip = ask_for_pardon_interaction_accept_decline
	}
}
add_clan_unity_interaction_effect = {
	CHARACTER = scope:recipient
	TARGET = scope:actor
	VALUE = minor_unity_loss
	DESC = clan_unity_refused_pardon.desc
	REVERSE_NON_HOUSE_TARGET = no
}
on_auto_accept = scope:recipient = {
	trigger_event = char_interaction.0240
}

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

Category
Vassal actions
In the menu
under More…
ID
ask_for_pardon_interaction

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