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

Demand Courtier

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

Demand a Courtier from the recipient The demanded Courtier cannot be:     •  One of their Heirs     •  A Child     •  One of their Spouses or Concubines     •  In a non-dominant Marriage     •  their Regent

What you need

You

To send it

  • … has no available, healthy, adult Courtiers

To see it in the menu

  • If played by the AI:
    • Any tributary:
    • Ai greed at least 0

The character you target

  • One of these

    • If

      • You: Government allows: obedience

      Then

      • Is a vassal of you
    • or

      Is a tributary of you
    • or

      All of these

    • or

      All of these

Which character you can pick

Demand Courtier is a vassal character interaction in Crusader Kings III. Accepted automatically in some cases; otherwise the AI weighs it. Reasons the AI weighs include The recipient is Obedient to you (+1,000), Intimidated by you (+25), Terrified of you (+50) and 7 more. Patch 1.20.1.2, from game/common/character_interactions/00_tributary_interactions.txt.

for a guide, post or blog
Quick answers (1)
How do I get the AI to accept Demand Courtier?
Accepted automatically in some cases; otherwise the AI weighs it. Its reasons: The recipient is Obedient to you +1,000, Intimidated by you +25, Terrified of you +50, … Opinion of …, The character you send is a Councillor or holds a Court Position -25, The character you send is a Knight -15, The character you send has an Inspiration -50, The character you send is my Family Member -25, The character you send is my Friend -50, Weak Hook used +100 and The character you send is my Rival +1,000.

Will they accept?

Accepted automatically when:

  • Holds Ministry of Personnel
  • … and … are in the same realm
  • The character you target: Is played by the AI

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

ReasonAmount
Base0
The recipient is Obedient to you
when
  • The character you target: Is obedient to you
+1,000
Intimidated by you
when
  • The character you target:
    • has_dread_level_towards = { target = scope:actor level = 1 }
+25
Terrified of you
when
  • The character you target:
    • has_dread_level_towards = { target = scope:actor level = 2 }
+50
… Opinion of …varies
The character you send is a Councillor or holds a Court Position
when
  • The character you send:
    • One of these

-25
The character you send is a Knight
when
  • The character you send:
    • is_knight = yes
-15
The character you send has an Inspiration-50
The character you send is my Family Member
when
  • The character you send: Is family of the target
-25
The character you send is my Friend
when
  • The character you send: Has the target as friend
-50
Weak Hook used
when
+100
The character you send is my Rival
when
  • The character you send: Has the target as rival
+1,000
Acceptance (ai_accept) (82 lines of game script)
base = 0
modifier = {
	add = 1000
	scope:recipient = {
		is_obedient_to = scope:actor
	}
	desc = AI_OBEDIENT_REASON
}
modifier = {
	add = 25
	scope:recipient = {
		has_dread_level_towards = {
			target = scope:actor
			level = 1
		}
	}
	desc = INTIMIDATED_REASON
}
modifier = {
	add = 50
	scope:recipient = {
		has_dread_level_towards = {
			target = scope:actor
			level = 2
		}
	}
	desc = COWED_REASON
}
opinion_modifier = {
	who = scope:recipient
	opinion_target = scope:actor
	multiplier = 1.0
	desc = AI_OPINION_REASON
}
modifier = {
	add = -25
	scope:secondary_actor = {
		OR = {
			is_councillor = yes
			has_any_court_position = yes
		}
	}
	desc = AI_EMPLOYED_COURTIER_REASON
}
modifier = {
	add = -15
	scope:secondary_actor = {
		is_knight = yes
	}
	desc = AI_IS_KNIGHT_REASON
}
modifier = {
	add = -50
	exists = scope:secondary_actor.inspiration
	desc = AI_INSPIRED_REASON
}
modifier = {
	add = -25
	scope:secondary_actor = {
		is_close_or_extended_family_of = scope:recipient
	}
	desc = AI_FAMILY_REASON
}
modifier = {
	add = -50
	scope:secondary_actor = {
		has_relation_friend = scope:recipient
	}
	desc = AI_FRIEND_REASON
}
modifier = {
	add = 100
	scope:hook ?= yes
	desc = SCHEME_WEAK_HOOK_USED
}
modifier = {
	add = 1000
	scope:secondary_actor = {
		has_relation_rival = scope:recipient
	}
	desc = AI_RIVAL_REASON
}

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

What happens

If they accept

  • If

    • You: Holds Ministry of Personnel
    • The character you target:
      • top_liege = scope:actor.top_liege

    Then

    • You:
      • add_courtier = scope:secondary_actor
      • The character you send:
        • Every consort:
          • Where: Is a courtier of the target
          • You:
            • add_courtier = prev
        • Every child:
          • Where: Is a child · Is a courtier of the target
          • You:
            • add_courtier = prev

    Otherwise

    • The character you send: Opinion: Annoyed (-10)
    • You:
      • add_courtier = scope:secondary_actor
      • The character you send:
        • Every consort:
          • Where: Is a courtier of the target
          • You:
            • add_courtier = prev
        • Every child:
          • Where: Is a child · Is a courtier of the target
          • You:
            • add_courtier = prev
      • Opinion: Received Courtier (+20)
      • If

        Then

        • Use a Hook on the target
    • The character you target: Opinion: Upset (-15)

If they refuse

  • … refused to hand over … to …
  • Opinion: Upset (-15)

Options when sending

  • Use a Hook

• 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) (35 lines of game script)
is_available = trigger_if = {
	limit = {
		is_ai = yes
	}
	any_tributary = { }
	ai_greed >= 0
}
is_shown = scope:actor != scope:recipient
scope:recipient = {
	OR = {
		trigger_if = {
			limit = {
				scope:actor = {
					government_allows = obedience
				}
			}
			is_vassal_of = scope:actor
		}
		is_tributary_of = scope:actor
		AND = {
			scope:actor = {
				government_has_flag = government_is_celestial
			}
			liege ?= scope:actor
		}
		AND = {
			scope:actor = {
				has_title = title:e_minister_of_personnel
			}
			is_ruler = yes
			top_liege ?= scope:actor.top_liege
			top_liege != this
		}
	}
}

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

Can be sent when (is_valid…) (24 lines of game script)
custom_tooltip = {
	text = demand_courtier_valid_courtier_tt
	scope:recipient = {
		any_courtier = {
			is_available_healthy_ai_adult = yes
			NOR = {
				is_consort_of = scope:recipient
				is_heir_of = scope:recipient
				AND = {
					is_female = yes
					patrilinear_marriage = yes
				}
				AND = {
					is_male = yes
					matrilinear_marriage = yes
				}
				is_diarch = yes
				is_designated_diarch = yes
				has_character_flag = has_been_offered_as_concubine
			}
		}
	}
}

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

Effects (on_send, on_accept, on_decline) (111 lines of game script)
on_send = scope:secondary_actor = {
	add_character_flag = {
		flag = has_been_offered_as_concubine
		days = 5
	}
}
on_accept = scope:actor = {
	send_interface_toast = {
		type = event_toast_effect_good
		title = msg_courtier_demand_accepted_title
		right_icon = scope:recipient
		left_icon = scope:secondary_actor
		if = {
			limit = {
				scope:actor = {
					has_title = title:e_minister_of_personnel
				}
				scope:recipient = {
					top_liege = scope:actor.top_liege
				}
			}
			scope:actor = {
				add_courtier = scope:secondary_actor
				scope:secondary_actor = {
					every_consort = {
						limit = {
							is_courtier_of = scope:recipient
						}
						scope:actor = {
							add_courtier = prev
						}
					}
					every_child = {
						limit = {
							is_adult = no
							is_courtier_of = scope:recipient
						}
						scope:actor = {
							add_courtier = prev
						}
					}
				}
			}
		}
		else = {
			scope:secondary_actor = {
				add_opinion = {
					target = scope:recipient
					modifier = annoyed_opinion
					opinion = -10
				}
			}
			scope:actor = {
				add_courtier = scope:secondary_actor
				scope:secondary_actor = {
					every_consort = {
						limit = {
							is_courtier_of = scope:recipient
						}
						scope:actor = {
							add_courtier = prev
						}
					}
					every_child = {
						limit = {
							is_adult = no
							is_courtier_of = scope:recipient
						}
						scope:actor = {
							add_courtier = prev
						}
					}
				}
				add_opinion = {
					target = scope:recipient
					modifier = offer_courtier_opinion
					opinion = 20
				}
				if = {
					limit = {
						scope:hook = yes
					}
					use_hook = scope:recipient
				}
			}
			scope:recipient = {
				add_opinion = {
					target = scope:actor
					modifier = upset_opinion
					opinion = -15
				}
			}
		}
	}
}
on_decline = scope:actor = {
	send_interface_toast = {
		type = event_toast_effect_bad
		title = msg_courtier_demand_rejected_title
		right_icon = scope:recipient
		left_icon = scope:secondary_actor
		custom_tooltip = msg_courtier_demand_rejected
	}
}
scope:actor = {
	add_opinion = {
		target = scope:recipient
		modifier = upset_opinion
		opinion = -15
	}
}

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

Category
Vassal actions
Again on the same character
after 3 years
In the menu
under More…
ID
demand_courtier_interaction

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