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

Interaction · Diplomatic actions

Protect Vassal

No costAccepted automatically

Join a War on the side of your Vassal to protect your land and titles

What you need

You

To send it

  • Is at not War

To see it in the menu

  • If played by the AI: Is at not War

The character you target

  • One of these

    • All of these

      • Is a tributary of you
      • subject_contract_has_flag = tributary_contract_suzerain_guarantee_override
      • You: Has the Conditional Join Law
    • or

      All of these

  • Is at War
  • Is not at war with you
  • Any character war:
    • primary_attacker = { … }

Which character you can pick

  • The target:
    • The War is between your own Vassals
    • Has the target as the war's defender
    • If

      • The character you target: Is a vassal of you

      Then

      Else if

      • The character you target: Is a tributary of you or of your suzerains

      Then

      Otherwise

      • always = yes
    • The War is ongoing for less than 3 years

Protect Vassal is a diplomatic character interaction in Crusader Kings III. You need: Is at not War. Accepted automatically. Patch 1.20.1.2, from game/common/character_interactions/00_alliance.txt.

for a guide, post or blog
Quick answers (2)
What are the requirements for Protect Vassal in CK3?
You: Is at not War. (patch 1.20.1.2)
Will the AI accept Protect Vassal?
Yes: it is accepted automatically.

Will they accept?

The other character has no choice: the game accepts it automatically.

Acceptance (ai_accept) (1 line of game script)
base = 100

As written in game/common/character_interactions/00_alliance.txt.

What happens

Effects

  • The target:
    • add_defender = scope:actor
    • If

      • One of these

        • You › Any home court hostage:
          • warden ?= { is_attacker_in_war = scope:target }
        • or

          The target › Any war attacker › Any warden hostage:
          • home_court ?= scope:actor

      Then

    • If

      • One of these

      • You › Any active accolade:
        • accolade_parameter = acclaimed_knight_piety_from_battle

      Then

    • If

      • One of these

      • You › Any active accolade:
        • accolade_parameter = acclaimed_knight_piety_from_battle_high

      Then

    • You: Stress and fulfillment impact: by trait: Craven +40
  • If

    • The target:
      • Has the target as the war's defender
      • The target’s house is your
      • primary_attacker = { house != scope:actor.house }

    Then

    • If

      • You: Government is Clan
      • The character you target: Government is Clan
      • Your house is the target’s
      • If

        • You are not the target

        Then

        • You are not the target

      Then

      • Your house:
        • add_unity_value = { … }

      Else if

      • No
      • You: Government is Clan
      • Your house: Has you as house head
      • One of these

        • All of these

          • exists = scope:recipient.house
          • Your house is not the target’s
        • or

          The character you target: Is Lowborn

      Then

      • Your house:
        • add_unity_value = { … }

If they refuse

Events it fires: char_interaction.0236

• 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) (35 lines of game script)
is_available = trigger_if = {
	limit = {
		is_ai = yes
	}
	is_at_war = no
}
is_shown = scope:recipient = {
	OR = {
		AND = {
			is_tributary_of = scope:actor
			subject_contract_has_flag = tributary_contract_suzerain_guarantee_override
			scope:actor = {
				has_realm_law = top_liege_not_redirected_to_border_wars_law
			}
		}
		AND = {
			is_vassal_or_below_of = scope:actor
			any_liege_or_above = {
				has_realm_law = top_liege_not_redirected_to_border_wars_law
			}
		}
	}
	is_at_war = yes
	NOR = {
		this = scope:actor
		is_at_war_with = scope:actor
	}
	any_character_war = {
		primary_attacker = {
			NOT = {
				is_vassal_or_below_of = scope:actor
			}
		}
	}
}

As written in game/common/character_interactions/00_alliance.txt.

Can be sent when (is_valid…) (3 lines of game script)
scope:actor = {
	is_at_war = no
}

As written in game/common/character_interactions/00_alliance.txt.

Effects (on_send, on_accept, on_decline) (84 lines of game script)
on_accept = scope:target ?= {
	hidden_effect = {
		set_called_to = scope:actor
	}
	add_defender = scope:actor
	if = {
		limit = {
			OR = {
				scope:actor = {
					any_home_court_hostage = {
						warden ?= {
							is_attacker_in_war = scope:target
						}
					}
				}
				scope:target = {
					any_war_attacker = {
						any_warden_hostage = {
							home_court ?= scope:actor
						}
					}
				}
			}
		}
		custom_tooltip = hostage_execution_warning_tt
	}
	if = {
		limit = {
			is_religious_war = yes
			scope:actor = {
				any_active_accolade = {
					accolade_parameter = acclaimed_knight_piety_from_battle
				}
			}
		}
		scope:actor = {
			add_piety = medium_piety_gain
		}
	}
	if = {
		limit = {
			is_religious_war = yes
			scope:actor = {
				any_active_accolade = {
					accolade_parameter = acclaimed_knight_piety_from_battle_high
				}
			}
		}
		scope:actor = {
			add_piety = major_piety_gain
		}
	}
	scope:actor = {
		stress_and_fulfillment_impact = {
			craven = medium_stress_impact_gain
		}
		add_to_variable_list = {
			name = joined_as_ally
			target = scope:target
		}
	}
}
if = {
	limit = {
		exists = scope:target
		scope:target = {
			primary_defender = scope:recipient
			scope:recipient.house = scope:actor.house
			primary_attacker = {
				house != scope:actor.house
			}
		}
	}
	add_clan_unity_interaction_effect = {
		CHARACTER = scope:actor
		TARGET = scope:recipient
		VALUE = medium_unity_gain
		DESC = clan_unity_join_war.desc
		REVERSE_NON_HOUSE_TARGET = no
	}
}
on_decline = scope:actor = {
	trigger_event = char_interaction.0236
}

As written in game/common/character_interactions/00_alliance.txt.

Category
Diplomatic actions
In the menu
main list
ID
join_vassal_war_interaction

Source: game/common/character_interactions/00_alliance.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?