Interaction · Diplomatic actions
Offer Concubine
Offer a Concubine to the recipient
What you need
You
To send it
The character you target
- Their government is not unplayable
allowed_concubines = yes- Is an Adult
Which character you can pick
- Is an Adult
Offer Concubine is a diplomatic character interaction in Crusader Kings III. The AI weighs it. Reasons the AI weighs include The character you send is Noble (+50), Your Candidate is Lowborn with no positive Congenital Traits (-50), The recipient's Faith does not accept Same-Sex Relations (-1,000) and 18 more. Patch 1.20.1.2, from game/common/character_interactions/00_marriage_interactions.txt.
Quick answers (1)
- How do I get the AI to accept Offer Concubine?
- The AI weighs it. Its reasons: Positive Congenital Traits, The character you send is Noble +50, Negative Congenital Traits, Your Candidate is Lowborn with no positive Congenital Traits -50, … Opinion of …, … Opinion of …, Age Considerations, The recipient's Faith does not accept Same-Sex Relations -1,000, The recipient has no Heir, and the union will have no Fertility -200, The recipient is attracted to the other character +50, You … their Liege +40, Rank Difference +20, Rank Difference +30, Rank Difference +40, Rank Difference +50, Rank Difference +60, Rank Difference -20, Rank Difference -30, Rank Difference -40, Rank Difference -50, Rank Difference -60, Intimidated by you, Terrified of you, Intimidated by you, Terrified of you, The character you send has a sexually transmitted disease -250, The character you send has a contagious disease -250, The character you send is infertile -5,000, Weak Hook used +500, Strong Hook used +1,000 and Wants to increase House Unity.
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.
| Reason | Amount |
|---|---|
| Base | +50 |
Positive Congenital Traitswhen
| varies |
The character you send is Noblewhen
| +50 |
Negative Congenital Traitswhen
| varies |
Your Candidate is Lowborn with no positive Congenital Traitswhen
| -50 |
| … Opinion of … | varies |
| … Opinion of … | varies |
Age Considerationswhen
| age |
The recipient's Faith does not accept Same-Sex Relationswhen
| -1,000 |
The recipient has no Heir, and the union will have no Fertilitywhen
| -200 |
The recipient is attracted to the other characterwhen
| +50 |
You … their Liegewhen
| +40 |
Rank Differencewhen
| +20 |
Rank Differencewhen
| +30 |
Rank Differencewhen
| +40 |
Rank Differencewhen
| +50 |
Rank Differencewhen
| +60 |
Rank Differencewhen
| -20 |
Rank Differencewhen
| -30 |
Rank Differencewhen
| -40 |
Rank Differencewhen
| -50 |
Rank Differencewhen
| -60 |
Intimidated by youwhen
| intimidated_reason_value |
Terrified of youwhen
| cowed_reason_value |
Intimidated by youwhen
| intimidated_external_reason_value |
Terrified of youwhen
| cowed_external_reason_value |
The character you send has a sexually transmitted diseasewhen
| -250 |
| The character you send has a contagious disease | -250 |
The character you send is infertilewhen
| -5,000 |
Weak Hook usedwhen
| +500 |
Strong Hook usedwhen
| +1,000 |
Wants to increase House Unitywhen
| varies |
Acceptance (ai_accept) (297 lines of game script)
base = 50
modifier = {
add = {
value = 50
multiply = scope:secondary_recipient.num_of_good_genetic_traits
}
scope:secondary_recipient = {
num_of_good_genetic_traits > 0
trigger_if = {
limit = {
is_female = yes
}
is_aging_character = no
}
}
desc = AI_POSITIVE_TRAIT_REASON
}
modifier = {
add = {
value = 50
}
scope:secondary_recipient = {
is_lowborn = no
trigger_if = {
limit = {
is_female = yes
}
is_aging_character = no
}
}
desc = AI_DYNASTY_PRESTIGE_REASON_NOBLE
}
modifier = {
add = {
value = -50
multiply = scope:secondary_recipient.num_of_bad_genetic_traits
}
scope:secondary_recipient = {
num_of_bad_genetic_traits > 0
trigger_if = {
limit = {
is_female = yes
}
is_aging_character = no
}
}
desc = AI_NEGATIVE_TRAIT_REASON
}
modifier = {
add = {
value = -50
}
scope:secondary_recipient = {
is_lowborn = yes
num_of_good_genetic_traits = 0
trigger_if = {
limit = {
is_female = yes
}
is_aging_character = no
}
}
desc = AI_DYNASTY_PRESTIGE_REASON_LOWBORN_NO_POSITIVE_TRAIT
}
opinion_modifier = {
who = scope:recipient
opinion_target = scope:puppet_or_actor
multiplier = 1.0
desc = AI_OPINION_REASON
}
opinion_modifier = {
who = scope:recipient
opinion_target = scope:secondary_recipient
multiplier = 0.25
desc = AI_OPINION_REASON
}
compare_modifier = {
trigger = {
scope:secondary_recipient = {
is_young_character = no
is_female = yes
}
}
target = scope:secondary_recipient
value = age
multiplier = -5.0
step = 1
offset = -29
desc = MARRY_AGE
}
modifier = {
add = -1000
scope:recipient = {
allowed_to_marry_same_sex_trigger = no
sex_same_as = scope:secondary_recipient
}
desc = SAME_SEX_MARRIAGE_FAITH_REASON_RECIPIENT
}
modifier = {
add = -200
scope:recipient = {
allowed_to_marry_same_sex_trigger = yes
sex_same_as = scope:secondary_recipient
trigger_if = {
limit = {
NOT = {
any_consort = {
can_have_children_with = {
CHARACTER = scope:recipient
}
fertility > 0.1
}
}
}
any_child = {
is_player_heir_of = root
}
}
trigger_else = {
always = no
}
}
desc = AI_NO_FERTILITY_REASON
}
modifier = {
add = 50
scope:recipient = {
is_attracted_to_gender_of = scope:secondary_recipient
}
desc = AI_ATTRACTION_REASON
}
modifier = {
add = 40
scope:puppet_or_actor = {
is_landed = yes
}
scope:recipient = {
is_landed = yes
target_is_liege_or_above = scope:puppet_or_actor
}
desc = LIEGE_REASON
}
modifier = {
add = 20
scope:puppet_or_actor = {
tier_difference = {
target = scope:recipient
value = 1
}
}
desc = AI_RANK_DIFF
}
modifier = {
add = 30
scope:puppet_or_actor = {
tier_difference = {
target = scope:recipient
value = 2
}
}
desc = AI_RANK_DIFF
}
modifier = {
add = 40
scope:puppet_or_actor = {
tier_difference = {
target = scope:recipient
value = 3
}
}
desc = AI_RANK_DIFF
}
modifier = {
add = 50
scope:puppet_or_actor = {
tier_difference = {
target = scope:recipient
value = 4
}
}
desc = AI_RANK_DIFF
}
modifier = {
add = 60
scope:puppet_or_actor = {
tier_difference = {
target = scope:recipient
value = 5
}
}
desc = AI_RANK_DIFF
}
modifier = {
add = -20
scope:puppet_or_actor = {
tier_difference = {
target = scope:recipient
value = -1
}
}
desc = AI_RANK_DIFF
}
modifier = {
add = -30
scope:puppet_or_actor = {
tier_difference = {
target = scope:recipient
value = -2
}
}
desc = AI_RANK_DIFF
}
modifier = {
add = -40
scope:puppet_or_actor = {
tier_difference = {
target = scope:recipient
value = -3
}
}
desc = AI_RANK_DIFF
}
modifier = {
add = -50
scope:puppet_or_actor = {
tier_difference = {
target = scope:recipient
value = -4
}
}
desc = AI_RANK_DIFF
}
modifier = {
add = -60
scope:puppet_or_actor = {
tier_difference = {
target = scope:recipient
value = -5
}
}
desc = AI_RANK_DIFF
}
modifier = {
add = intimidated_reason_value
scope:recipient = {
target_is_liege_or_above = scope:puppet_or_actor
has_dread_level_towards = {
target = scope:puppet_or_actor
level = 1
}
}
desc = INTIMIDATED_REASON
}
modifier = {
add = cowed_reason_value
scope:recipient = {
target_is_liege_or_above = scope:puppet_or_actor
has_dread_level_towards = {
target = scope:puppet_or_actor
level = 2
}
}
desc = COWED_REASON
}
modifier = {
add = intimidated_external_reason_value
scope:recipient = {
NOT = {
target_is_liege_or_above = scope:puppet_or_actor
}
has_dread_level_towards = {
target = scope:puppet_or_actor
level = 1
}
}
desc = INTIMIDATED_REASON
}
modifier = {
add = cowed_external_reason_value
scope:recipient = {
NOT = {
target_is_liege_or_above = scope:puppet_or_actor
}
has_dread_level_towards = {
target = scope:puppet_or_actor
level = 2
}
}
desc = COWED_REASON
}
modifier = {
add = -250
scope:secondary_recipient = {
has_std_trigger = yes
}
desc =
# … (cut here; the rest is in the file)As written in game/common/character_interactions/00_marriage_interactions.txt.
What happens
If they accept
- The other character:
- Event marriage_interaction.0040
- If imprisoned:
release_from_prison = yes- Opinion: Forced Me to Serve as a Concubine
- Every close family member:
If
a check the game hides
Then
- Opinion: Forced My Relative to Serve as a Concubine
If
One of these
None of these
- Their rite: Has the Concubines Doctrine
or
None of these
- Their rite: The rite has the tenet Polyamory
or
All of these
allowed_to_marry_same_sex_trigger = { }- The character you target:
sex_same_as = scope:secondary_recipient
Then
- Opinion: Forced My Relative into a Blasphemous Union
If
- Is married
- No spouse:
Then
- Every spouse:
- Opinion: Forced My Spouse to Serve as a Concubine
divorce = scope:secondary_recipient- Event marriage_interaction.0043
If
betrothed != scope:recipient
Then
- Their betrothed: Event marriage_interaction.0043
break_betrothal = betrothed
- If number of concubines more than 0 › Every concubine › The other character:
remove_concubine = prev
If
- Is your concubine
Then
- You:
remove_concubine = scope:secondary_recipient
If
- The other character:
One of these
- Any consort:
or
exists = betrothed
Then
- You:
If
- The other character: Is the spouse’s consort
Then
- … is … consort and therefore cannot become … concubine
Otherwise
- … is betrothed to … and therefore cannot become … concubine
- The character you target:
If
- The other character: Is the spouse’s consort
Then
- … is … consort and therefore cannot become … concubine
Otherwise
- … is betrothed to … and therefore cannot become … concubine
Otherwise
- The other character:
- … (more in the script below)
If they refuse
Options when sending
- Use a Hook
Events it fires: marriage_interaction.0040, marriage_interaction.0043
• 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) (21 lines of game script)
is_available = trigger_if = {
limit = {
is_ai = yes
}
allowed_concubines = yes
NOR = {
has_trait = greedy
ai_greed > very_high_positive_ai_value
}
is_adult = yes
is_at_war = no
is_incapable = no
}
is_shown = scope:puppet_or_actor != scope:recipient
scope:recipient = {
NOT = {
government_has_flag = government_is_herder
}
allowed_concubines = yes
is_adult = yes
}As written in game/common/character_interactions/00_marriage_interactions.txt.
Can be sent when (is_valid…) (48 lines of game script)
custom_description = {
text = take_concubine_available_character_opp
object = scope:recipient
scope:puppet_or_actor = {
OR = {
any_courtier = {
can_be_offered_as_concubine_to_character_trigger = {
GIVER = scope:puppet_or_actor
CHARACTER = scope:recipient
}
}
any_prisoner = {
can_be_offered_as_concubine_to_character_trigger = {
GIVER = scope:puppet_or_actor
CHARACTER = scope:recipient
}
}
}
}
}
custom_description = {
text = take_concubine_allowed_more
object = scope:recipient
scope:recipient = {
allowed_more_concubines = yes
}
}
trigger_if = {
limit = {
scope:puppet_or_actor = {
is_landless_adventurer = yes
}
}
ep3_laamp_diplo_range_trigger = {
TARGET = scope:recipient
LAAMP = scope:puppet_or_actor
}
}
custom_description = {
text = character_unavailable_to_be_offered_as_concubine
object = scope:secondary_recipient
scope:secondary_recipient = {
can_be_offered_as_concubine_to_character_trigger = {
GIVER = scope:puppet_or_actor
CHARACTER = scope:recipient
}
}
}As written in game/common/character_interactions/00_marriage_interactions.txt.
Effects (on_send, on_accept, on_decline) (30 lines of game script)
on_send = scope:secondary_recipient = {
add_character_flag = {
flag = has_been_offered_as_concubine
days = 5
}
}
on_accept = concubine_offer_on_accept_effect = yes
add_clan_unity_interaction_effect = {
CHARACTER = scope:puppet_or_actor
TARGET = scope:recipient
VALUE = minor_unity_gain
DESC = clan_unity_concubinage_offer.desc
REVERSE_NON_HOUSE_TARGET = no
}
on_decline = scope:puppet_or_actor = {
send_interface_toast = {
type = event_toast_effect_bad
title = msg_concubine_offer_rejected_title
right_icon = scope:recipient
left_icon = scope:secondary_recipient
custom_tooltip = msg_concubine_offer_rejected
}
}
add_clan_unity_interaction_effect = {
CHARACTER = scope:puppet_or_actor
TARGET = scope:recipient
VALUE = medium_unity_loss
DESC = clan_unity_concubinage_offer_decline.desc
REVERSE_NON_HOUSE_TARGET = no
}As written in game/common/character_interactions/00_marriage_interactions.txt.
- Category
- Diplomatic actions
- In the menu
- under More…
- ID
offer_concubine
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.