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

Scripted effect

concubine_on_accept_effect

concubine_on_accept_effect = yes

game/common/scripted_effects/00_marriage_interaction_effects.txt, line 453 (129 lines). No parameters.

concubine_on_accept_effect is a scripted effect in Crusader Kings III, written at line 453 of its file. It takes no parameters: concubine_on_accept_effect = yes. The game's script calls it in 3 places, among them ai_make_concubine_interaction (interaction), Find Concubine (interaction) and Make Concubine (interaction). Patch 1.20.1.2, from game/common/scripted_effects/00_marriage_interaction_effects.txt.

What it does

  • scope:recipient:
    • Event marriage_interaction.0040
    • If

      Then

      • 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

            Then

            • Opinion: Forced My Relative into a Blasphemous Union
      • If has the Trait: Celibate: Loses the Trait Celibate
      • If married › Every spouse:
      • If concubine:
        • this.concubinist = { … }
      • If

        a check the game hides

        Then

      • If number of concubines more than 0 › Every concubine › scope:recipient:
        • remove_concubine = prev

• the game's own tooltip text · ◦ our reading of the script line · code the script where neither exists

“They” is whatever it runs on (the scope it is called in). The scripted triggers and effects it calls link to their own pages; $PARAMETERS$ stay as written: each call fills them in.

The script as written (120 lines of game script)
concubine_on_accept_effect = {
	scope:recipient = {
		save_scope_as = concubine_victim
		trigger_event = marriage_interaction.0040
		if = {
			# Victim is angry for being forced into concubinage.
			limit = {
				OR = {
					has_trait = celibate
					is_imprisoned = yes
				}
			}
			release_from_prison = yes
			add_opinion = {
				target = scope:puppet_or_actor
				modifier = forced_me_concubine_marriage_opinion
			}

			# Family members of victim are also angry that you've forced them into concubinage.
			every_close_family_member = {
				if = {
					limit = { 
						this != scope:puppet_or_actor # Don't hate yourself.
					}
					add_opinion = {
						target = scope:puppet_or_actor
						modifier = forced_family_concubine_marriage_opinion
					}
					hidden_effect = {
						send_interface_message = {
							type = msg_family_became_concubine
							title = msg_close_family_member_taken_as_concubine_title
							right_icon = scope:puppet_or_actor
							left_icon = scope:recipient
							show_as_tooltip = { scope:puppet_or_actor = { make_concubine = scope:recipient } }
						}
					}

					# Family members are even *more* angry if they don't believe in concubines/polyamory (different from polygamy). Also if they don't accept same-sex relationships
					if = {
						limit = { 
							OR = {
								NOT = { rite = { rite_has_doctrine = doctrine_concubines } }
								NOT = { rite = { rite_has_tenet = tenet_polyamory } }
								AND = {
									allowed_to_marry_same_sex_trigger = no
									scope:recipient = { sex_same_as = scope:secondary_actor }
								}
							}
						}
						add_opinion = {
							target = scope:puppet_or_actor
							modifier = relative_in_blasphemous_union_opinion
						}
					}
				}
			}	

			# Not up to them anymore...
			if = {
				limit = { has_trait = celibate }
				remove_trait = celibate
			}			
					
			# Spouses, if any exist, are also furious.
			if = {
				limit = {
					is_married = yes
				}
				every_spouse = {
					show_as_tooltip = {
						add_opinion = {
							target = scope:puppet_or_actor
							modifier = forced_spouse_concubine_marriage_opinion
						}
						divorce = scope:recipient # no additional opinion hit, no scripted effect
					}
					trigger_event = marriage_interaction.0041
				}
			}
					
			# Stealing concubines pisses the former concubinist off.
			if = {
				limit = {
					is_concubine = yes
				}
				this.concubinist = {
					show_as_tooltip = {
						add_opinion = {
							target = scope:secondary_actor
							modifier = stole_concubine_opinion
						}
						remove_concubine = scope:recipient # no additional opinion hit, no scripted effect
					}
					trigger_event = marriage_interaction.0041
				}
			}

			# Break any betrothals which may exist (without additional opinion penalties).
			if = {
				limit = { exists = betrothed }
				betrothed = { trigger_event = marriage_interaction.0041 }
				break_betrothal = betrothed
			}

			# Having concubines means they're now no longer yours.
			if = {
				limit = { number_of_concubines > 0	}
				every_concubine = {
					scope:recipient = {
						remove_concubine = prev
					}
				}
			}
		}
	}

	# Send us a notification about what we just did.
	scope:secondary_actor = {
		hidden_effect = {

As written in game/common/scripted_effects/00_marriage_interaction_effects.txt.

The first 120 of its 129 lines; the rest is in game/common/scripted_effects/00_marriage_interaction_effects.txt from line 453.

Where it is used

Every place in common/, events/ and history/ that calls concubine_on_accept_effect.

Character interactions (3)

Source: game/common/scripted_effects/00_marriage_interaction_effects.txt and every file of common/, events/ and history/ that calls it, Crusader Kings III 1.20.1.2.

Spotted a mistake on this page?