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

Scripted effect · Khans of the Steppe files

mpo_war_vassal_tributary_effect

mpo_war_vassal_tributary_effect = { WAR = … }

game/common/scripted_effects/09_dlc_mpo_scripted_effects.txt, line 4987 (194 lines). Parameters: $WAR$.

mpo_war_vassal_tributary_effect is a scripted effect in Crusader Kings III, in the Khans of the Steppe files, written at line 4987 of its file. A call passes 1 parameter: WAR. The game's script calls it in 1 place, among them Expand Dominance (casus belli). Patch 1.20.1.2, from game/common/scripted_effects/09_dlc_mpo_scripted_effects.txt.

What it does

  • Every in list:
  • Every in list:
    • If

      • None of these

        • Any held county:
          • is_landless_type_title = no
          • NOT = { is_in_list = titles_taken }
      • NOT = { top_liege = scope:attacker }
      • NOT = { top_suzerain ?= scope:attacker }
      • Highest held Title is at most scope:war goal title.tier Rank

      Then

      • If

        • scope:attacker.vassal_count >= vassal_limit

        Then

        • start_tributary_from_war_effect = { TRIBUTARY = scope:defender SUZERAIN = scope:attacker WAR = $WAR$ }
        • If

          Then

          • scope:defender.confederation:
            • remove_confederation_member = scope:defender

        Otherwise

        • change_liege = { liege = scope:attacker change = scope:change }
      • Every in list:
        • Where:
          • holder ?= scope:current_target_holder
        • remove_from_list = titles_taken
  • Every in list:
    • Where › Their holder:
      • No liege or above:
      • NOT = { top_suzerain ?= scope:attacker }
    • Gains the … Title (attacker)
    • remove_from_list = target_titles
  • scope:attacker: Gain … Prestige
  • scope:target_title:
    • If

      • NOT = { target_is_de_jure_liege_or_above = scope:attacker.primary_title }
      • None of these

        • Any de jure county › Their holder:
          • NOT = { top_liege = scope:attacker }
          • NOT = { top_suzerain ?= scope:attacker }

      Then

      • set_de_jure_liege_title = scope:attacker.primary_title
  • Every in list:
    • If

      Then

      • Every held title:
        • Where: Title tier at least County
        • scope:defender:
          • destroy_title = 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)
mpo_war_vassal_tributary_effect = {
	create_title_and_vassal_change = {
		type = conquest
		save_scope_as = change
		add_claim_on_loss = yes
	}

	every_in_list = {
		list = target_titles
		if = {
			limit = {
				tier >= tier_county
			}
			every_de_jure_county = {
				limit = {
					holder = {
						OR = {
							this = scope:defender
							top_liege = scope:defender
							top_suzerain ?= scope:defender
						}
					}
				}
				holder ?= {
					add_to_list = target_holder
				}
				add_to_list = titles_taken
			}
		}

		holder ?= {
			add_to_list = target_holder
			save_scope_as = temp_de_jure_liege
		}
		add_hook_from_temp_de_jure_liege_to_attacker = yes
	}

	every_in_list = {
		list = titles_taken
		add_to_list = prestige_gain_list
	}

	ordered_in_list = {
		list = titles_taken
		order_by = tier
		max = 1
		save_scope_as = war_goal_title
	}

	every_in_list = {
		list = target_holder
		save_scope_as = current_target_holder
		if = {
			limit = {
				NOT = {
					any_held_county = {
						is_landless_type_title = no
						NOT = { is_in_list = titles_taken }
					}
				}
				NOR = {
					this = scope:attacker
					top_liege = scope:attacker
					top_suzerain ?= scope:attacker
				}
				highest_held_title_tier <= scope:war_goal_title.tier
			}
			if = {
				limit = {
					scope:attacker.vassal_count >= vassal_limit
				}
				start_tributary_from_war_effect = {
					TRIBUTARY = scope:defender
					SUZERAIN = scope:attacker
					WAR = $WAR$
				}
				#If you tributarize a confederate, they leave their confederation
				if = {
					limit = {
						scope:defender = {
							is_confederation_member = yes
						}
					}
					scope:defender.confederation = {
						remove_confederation_member = scope:defender
					}
				}
			}
			else = {
				change_liege = {
					liege = scope:attacker
					change = scope:change
				}
			}
			every_in_list = {
				list = titles_taken
				limit = {
					holder ?= scope:current_target_holder
				}
				remove_from_list = titles_taken
			}
		}
	}

	every_in_list = {
		list = titles_taken
		limit = {
			holder ?= {
				NOR = {
					this = scope:attacker
					any_liege_or_above = { this = scope:attacker }
					top_suzerain ?= scope:attacker
				}
			}
		}
		change_title_holder = {
			holder = scope:attacker
			change = scope:change
		}
		remove_from_list = target_titles

As written in game/common/scripted_effects/09_dlc_mpo_scripted_effects.txt.

The first 120 of its 194 lines; the rest is in game/common/scripted_effects/09_dlc_mpo_scripted_effects.txt from line 4987.

Where it is used

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

Casus belli (1)

Source: game/common/scripted_effects/09_dlc_mpo_scripted_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?