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

Scripted effect

start_tributary_interaction_effect

start_tributary_interaction_effect = { SUZERAIN = … TRIBUTARY = … }

game/common/scripted_effects/00_interaction_effects.txt, line 2325 (693 lines). Parameters: $SUZERAIN$, $TRIBUTARY$.

start_tributary_interaction_effect is a scripted effect in Crusader Kings III, written at line 2325 of its file. A call passes 2 parameters: SUZERAIN and TRIBUTARY. The game's script calls it in 42 places, among them Adopt Meritocratic Government (decision), Become a Meritocratic Khanate (decision) and Forsake Nomadism (decision). Its body carries 83 texts of the game's own for the player. Patch 1.20.1.2, from game/common/scripted_effects/00_interaction_effects.txt.

The comment above it in the file

Effect to start a tributary relationship, can be called directly without a war or from start_tributary_from_war_effect
$TRIBUTARY$ = the new tributary
$SUZERAIN$ = their suzerain

What it does

  • If

    Then

    • $TRIBUTARY$ = { … }

    Else if

    Then

    • $TRIBUTARY$ = { … }

    Else if

    • $SUZERAIN$ = { has_government = nomad_government }

    Then

    • $TRIBUTARY$ = { … }

    Else if

    • $SUZERAIN$ = { has_government = steppe_admin_government }

    Then

    • $TRIBUTARY$ = { … }

    Else if

    • $SUZERAIN$ = { has_government = celestial_government highest_held_title_tier >= tier_hegemony }

    Then

    • $TRIBUTARY$ = { … }

    Else if

    • $SUZERAIN$ = { highest_held_title_tier = tier_hegemony }

    Then

    • $TRIBUTARY$ = { … }

    Otherwise

    • $TRIBUTARY$ = { … }
  • setup_tributary_truces_effect = { SUZERAIN = $SUZERAIN$ TRIBUTARY = $TRIBUTARY$ }

• 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)
start_tributary_interaction_effect = {
	# Setup truces depending on how the tributary relationship was created
	$TRIBUTARY$ = { save_scope_as = tributary_loc }
	$SUZERAIN$ = { save_scope_as = suzerain_loc }

	#Mandala Tributaries
	if = {
		limit = {
			should_be_mandala_tributary_trigger = {
				SUZERAIN = $SUZERAIN$
				TRIBUTARY = $TRIBUTARY$
			}
			trigger_if = {
				limit = { exists = scope:tributary_war }
				$SUZERAIN$ = {
					AND = {
						house = { has_house_head_parameter = can_make_mandala_tributaries_via_war }
						is_house_head = yes
					}
				}
			}
		}
		$TRIBUTARY$ = {
			if = {
				limit = { government_has_flag = government_is_tribal }
				start_tributary = {
					contract_group = tributary_mandala_tribal
					suzerain = $SUZERAIN$
				}
				if = {
					limit = {
						OR = {
							scope:high_obligations ?= yes
							exists = scope:tributary_war
						}
					}
					if = {
						limit = { is_tributary = yes } # suppress error logging
						hidden_effect = {
							tributary_contract_set_obligation_level = {
								type = mandala_government_taxes
								level = 3
							}
							tributary_contract_set_obligation_level = {
								type = mandala_government_prestige
								level = 2
							}
							tributary_contract_set_obligation_level = {
								type = mandala_government_levies
								level = 3
							}
						}
					}
					custom_tooltip = high_mandala_tribute_taxes
					custom_tooltip = high_mandala_tribute_prestige
					custom_tooltip = high_mandala_tribute_levies
				}
				else_if = {
					limit = { scope:low_obligations ?= yes }
					if = {
						limit = { is_tributary = yes } # suppress error logging
						hidden_effect = {
							tributary_contract_set_obligation_level = {
								type = mandala_government_taxes
								level = 0
							}
							tributary_contract_set_obligation_level = {
								type = mandala_government_prestige
								level = 0
							}
							tributary_contract_set_obligation_level = {
								type = mandala_government_levies
								level = 0
							}
						}
					}
					custom_tooltip = exempt_mandala_tribute_taxes
					custom_tooltip = low_mandala_tribute_prestige
					custom_tooltip = exempt_mandala_tribute_levies
				}
				else = {
					if = {
						limit = { is_tributary = yes } # suppress error logging
						hidden_effect = {
							tributary_contract_set_obligation_level = {
								type = mandala_government_taxes
								level = 2
							}
							tributary_contract_set_obligation_level = {
								type = mandala_government_prestige
								level = 2
							}
							tributary_contract_set_obligation_level = {
								type = mandala_government_levies
								level = 1
							}
						}
					}
					custom_tooltip = normal_mandala_tribute_taxes
					custom_tooltip = normal_mandala_tribute_prestige
					custom_tooltip = low_mandala_tribute_levies
				}

				if = {
					limit = { is_tributary = yes } # suppress error logging
					tributary_contract_set_obligation_level = {
						type = mandala_suzerain_war_participation_guarantee
						level = 1
					}
				}
			}
			else = {
				start_tributary = {
					contract_group = tributary_mandala
					suzerain = $SUZERAIN$
				}
				if = {
					limit = {
						OR = {
							scope:high_obligations ?= yes

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

The first 120 of its 693 lines; the rest is in game/common/scripted_effects/00_interaction_effects.txt from line 2325.

Where it is used

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

Events (22)

16 more

On actions (the game's own hooks) (3)

  • mpo_the_great_steppe_yearly_pulse_random
  • on_become_independent_after_grant_title_at_vassal_limit
  • on_game_start_after_lobby

Source: game/common/scripted_effects/00_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?