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

Interaction · Friendly actions

Offer Eunuch

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

Send a Eunuch or Beardless Eunuch from your court to serve the recipient, gaining Influence.

What you need

You

To send it

  • None of these

    • The character you target: Is at war with you

To see it in the menu

  • If played by the AI: you has administrative government mechanic
  • Any courtier:
  • The target is not you
  • scope:recipient.top_liege ?= scope:recipient.liege
  • you has administrative government mechanic

The character you target

  • they has administrative government mechanic
  • Is a ruler

Which character you can pick

  • Is an Adult
  • This eunuch has already been offered to another character.

Offer Eunuch is a friendly character interaction in Crusader Kings III. Accepted automatically in some cases; otherwise the AI weighs it. Reasons the AI weighs include The other character is a Beardless Eunuch (+25). Patch 1.20.1.2, from game/common/character_interactions/06_ep3_interactions.txt.

for a guide, post or blog
Quick answers (1)
How do I get the AI to accept Offer Eunuch?
Accepted automatically in some cases; otherwise the AI weighs it. Its reasons: … Opinion of …, … Opinion of …, The other character's age, The other character's skills and The other character is a Beardless Eunuch +25.

Will they accept?

Accepted automatically when:

  • If

    Then

    • They use their Hook on …

    Otherwise

    • Never

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
… Opinion of …varies
… Opinion of …varies
The other character's agevaries
The other character's skillsvaries
The other character is a Beardless Eunuch
when
+25
Acceptance (ai_accept) (37 lines of game script)
base = -50
opinion_modifier = {
	who = scope:recipient
	opinion_target = scope:actor
	multiplier = 0.5
	desc = AI_OPINION_REASON
}
opinion_modifier = {
	who = scope:recipient
	opinion_target = scope:secondary_recipient
	multiplier = 0.5
	desc = AI_OPINION_REASON
}
modifier = {
	add = {
		value = 50
		subtract = scope:secondary_recipient.age
	}
	desc = AI_REASON_EUNUCH_AGE
}
modifier = {
	add = {
		add = scope:secondary_recipient.diplomacy
		add = scope:secondary_recipient.intrigue
		add = scope:secondary_recipient.stewardship
		add = scope:secondary_recipient.martial
		add = scope:secondary_recipient.learning
	}
	desc = AI_REASON_EUNUCH_SKILLS
}
modifier = {
	scope:secondary_recipient = {
		has_trait = beardless_eunuch
	}
	add = 25
	desc = AI_REASON_BEARDLESS_EUNUCH
}

As written in game/common/character_interactions/06_ep3_interactions.txt.

What happens

When you send it

  • The other character:
    • 1 of 48 things will happen:
      • 2%:
        • court_position_generator_shared_modifier = { POS = royal_architect EMPLOYER = scope:recipient }
      • 2%:
        • court_position_generator_shared_modifier = { POS = seneschal EMPLOYER = scope:recipient }
      • 2%:
        • court_position_generator_shared_modifier = { POS = court_tutor EMPLOYER = scope:recipient }
      • 2%:
        • court_position_generator_shared_modifier = { POS = high_almoner EMPLOYER = scope:recipient }
      • 2%:
        • court_position_generator_shared_modifier = { POS = court_physician EMPLOYER = scope:recipient }
      • 2%:
        • court_position_generator_shared_modifier = { POS = antiquarian EMPLOYER = scope:recipient }
      • 2%:
        • court_position_generator_shared_modifier = { POS = master_of_horse EMPLOYER = scope:recipient }
      • 2%:
        • court_position_generator_shared_modifier = { POS = bodyguard EMPLOYER = scope:recipient }
      • 2%:
        • court_position_generator_shared_modifier = { POS = master_of_hunt EMPLOYER = scope:recipient }
      • 2%:
        • court_position_generator_shared_modifier = { POS = champion EMPLOYER = scope:recipient }
      • 2%:
        • court_position_generator_shared_modifier = { POS = court_poet EMPLOYER = scope:recipient }
      • 2%:
        • court_position_generator_shared_modifier = { POS = court_musician EMPLOYER = scope:recipient }
      • 1%:
        • court_position_generator_shared_modifier = { POS = court_jester EMPLOYER = scope:recipient }
      • 2%:
        • court_position_generator_shared_modifier = { POS = executioner EMPLOYER = scope:recipient }
      • 2%:
        • court_position_generator_shared_modifier = { POS = food_taster EMPLOYER = scope:recipient }
      • 2%:
        • court_position_generator_shared_modifier = { POS = cupbearer EMPLOYER = scope:recipient }
      • 2%:
        • court_position_generator_shared_modifier = { POS = lady_in_waiting EMPLOYER = scope:recipient }
      • 4%:
        • court_position_generator_shared_modifier = { POS = chief_eunuch EMPLOYER = scope:recipient }
      • 2%:
        • court_position_generator_shared_modifier = { POS = court_gardener EMPLOYER = scope:recipient }
      • 2%:
        • court_position_generator_shared_modifier = { POS = court_artificer EMPLOYER = scope:recipient }
      • 2%:
        • court_position_generator_shared_modifier = { POS = cultural_emissary EMPLOYER = scope:recipient }
      • 2%:
        • court_position_generator_shared_modifier = { POS = chief_qadi EMPLOYER = scope:recipient }
      • 2%:
        • court_position_generator_shared_modifier = { POS = garuda EMPLOYER = scope:recipient }
      • 2%:
        • court_position_generator_shared_modifier = { POS = keeper_of_swans EMPLOYER = scope:recipient }
      • 2%:
        • court_position_generator_shared_modifier = { POS = travel_leader EMPLOYER = scope:recipient }
      • 2% (base chance; changed in play):
        • court_position_generator_shared_modifier = { POS = wet_nurse EMPLOYER = scope:recipient }
      • 2%:
        • court_position_generator_shared_modifier = { POS = cave_hermit EMPLOYER = scope:recipient }
      • 2%:
        • court_position_generator_shared_modifier = { POS = master_assassin EMPLOYER = scope:recipient }
      • 2%:
        • court_position_generator_shared_modifier = { POS = court_scholar EMPLOYER = scope:recipient }
      • 2%:
        • court_position_generator_shared_modifier = { POS = chronicler EMPLOYER = scope:recipient }
      • 2%:
        • court_position_generator_shared_modifier = { POS = akolouthos EMPLOYER = scope:recipient }
      • 2%:
        • court_position_generator_shared_modifier = { POS = court_astrologer EMPLOYER = scope:recipient }
      • 2%:
        • court_position_generator_shared_modifier = { POS = grand_preceptor EMPLOYER = scope:recipient }
      • 2%:
        • court_position_generator_shared_modifier = { POS = grand_guardian EMPLOYER = scope:recipient }
      • 2%:
        • court_position_generator_shared_modifier = { POS = grand_mentor EMPLOYER = scope:recipient }
      • 2%:
        • court_position_generator_shared_modifier = { POS = fire_dragon_engineer EMPLOYER = scope:recipient }
      • 2%:
        • court_position_generator_shared_modifier = { POS = keeper_of_the_harem EMPLOYER = scope:recipient }
      • 2%:
        • court_position_generator_shared_modifier = { POS = boyan EMPLOYER = scope:recipient }
      • 2%:
        • court_position_generator_shared_modifier = { POS = siege_engineer EMPLOYER = scope:recipient }
      • 2%:
        • court_position_generator_shared_modifier = { POS = yurtchi EMPLOYER = scope:recipient }
      • 2%:
        • court_position_generator_shared_modifier = { POS = cherbi EMPLOYER = scope:recipient }
      • 2%:
        • court_position_generator_shared_modifier = { POS = yeke_jarquchi EMPLOYER = scope:recipient }
      • 2%:
        • court_position_generator_shared_modifier = { POS = foreign_emissary EMPLOYER = scope:recipient }
      • 2%:
        • court_position_generator_shared_modifier = { POS = keeper_of_the_horses EMPLOYER = scope:recipient }
      • 2%:
        • court_position_generator_shared_modifier = { POS = court_guru EMPLOYER = scope:recipient }
      • 2%:
        • court_position_generator_shared_modifier = { POS = court_brahmin EMPLOYER = scope:recipient }
      • 2%:
        • court_position_generator_shared_modifier = { POS = khlon_glan EMPLOYER = scope:recipient }
      • 2%:
        • court_position_generator_shared_modifier = { POS = court_brewmaster EMPLOYER = scope:recipient }
    • clear_saved_scope = only_empty

If they accept

  • Event char_interaction.0350
  • The character you target:
    • add_courtier = scope:secondary_recipient
  • You:
    • change_influence = { … }
  • … will be given a Court Position if able

If they refuse

Options when sending

  • Use a Hook

Events it fires: char_interaction.0350, char_interaction.0351

• 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) (20 lines of game script)
is_available = trigger_if = {
	limit = {
		is_ai = yes
	}
	government_has_mechanic = administrative
}
any_courtier = {
	is_eunuch_trigger = yes
}
is_shown = scope:recipient = {
	government_has_mechanic = administrative
}
scope:recipient != scope:actor
scope:recipient = {
	is_ruler = yes
}
scope:recipient.top_liege ?= scope:recipient.liege
scope:actor = {
	government_has_mechanic = administrative
}

As written in game/common/character_interactions/06_ep3_interactions.txt.

Can be sent when (is_valid…) (30 lines of game script)
NOT = {
	scope:recipient = {
		is_at_war_with = scope:actor
	}
}
trigger_if = {
	limit = {
		scope:actor = {
			is_ai = yes
		}
		exists = scope:secondary_recipient
	}
	NOT = {
		scope:secondary_recipient = {
			has_character_flag = ai_should_not_offer_eunuch
		}
	}
}
scope:recipient = {
	trigger_if = {
		limit = {
			is_ai = no
		}
		NOT = {
			scope:secondary_recipient = {
				has_character_flag = ai_should_not_offer_eunuch
			}
		}
	}
}

As written in game/common/character_interactions/06_ep3_interactions.txt.

Effects (on_send, on_accept, on_decline) (52 lines of game script)
on_send = scope:secondary_recipient = {
	add_character_flag = {
		flag = under_offer_as_eunuch_flag
		months = 1
	}
	court_position_generator_effect = {
		VAR = target
		EMPLOYER = scope:recipient
		ONLY_EMPTY = no
	}
}
if = {
	limit = {
		scope:recipient = {
			is_ai = no
		}
	}
	hidden_effect = {
		scope:secondary_recipient = {
			add_character_flag = {
				flag = ai_should_not_offer_eunuch
				years = 3
			}
		}
	}
}
on_accept = scope:actor = {
	save_scope_as = eunuch_sender
}
scope:secondary_recipient = {
	save_scope_as = eunuch
}
scope:recipient = {
	save_scope_as = eunuch_taker
}
scope:actor = {
	trigger_event = char_interaction.0350
}
show_as_tooltip = {
	ep3_give_eunuch_effect = {
		EUNUCH = scope:secondary_recipient
		TAKER = scope:recipient
		GIVER = scope:actor
	}
	custom_tooltip = eunuch_will_be_given_a_position_tt
}
on_decline = scope:actor = {
	trigger_event = char_interaction.0351
}
scope:secondary_recipient = {
	remove_character_flag = under_offer_as_eunuch_flag
}

As written in game/common/character_interactions/06_ep3_interactions.txt.

Category
Friendly actions
Again on the same character
after 1 year
In the menu
under More…
ID
offer_eunuch_interaction

Source: game/common/character_interactions/06_ep3_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?