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

Interaction · Vassal actions

Request Military Aid

No costAccepted automatically

Make a formal request to have the recipient issue an order for a Military Governor to join your War

What you need

You

To send it

  • There are no Military Governors within the Realm
  • There are no Military Governors available that may join your Wars
  • Is at War
  • Is not at War with their Liege
  • Is not at war with the target
  • You are not at War with a Vassal of your Liege
  • If at War: … are not a War Leader
  • If

    • You: Is played by the AI

    Then

    • None of these

      • The character you target: Has “celestial request military aid cooldown” (a variable the game's script sets)

To see it in the menu

  • Government allows: merit
  • If played by the AI: Is at War
  • One of these

  • Is an Independent Ruler
  • you has administrative government mechanic

The character you target

  • they has administrative government mechanic
  • One of these

    • this = scope:actor.top_liege
    • or

      All of these

      • Holds Ministry of War
      • Their liege:
        • All of these

          • Holds China
          • Government is Celestial
          • Their government has the government uses ministry budget flag
        • this = scope:actor.top_liege

Request Military Aid is a vassal character interaction in Crusader Kings III. You need: There are no Military Governors within the Realm, There are no Military Governors available that may join your Wars, Is at War and 3 more. Accepted automatically. Patch 1.20.1.2, from game/common/character_interactions/10_tgp_interactions.txt.

for a guide, post or blog
Quick answers (2)
What are the requirements for Request Military Aid in CK3?
You: There are no Military Governors within the Realm, There are no Military Governors available that may join your Wars, Is at War, Is not at War with their Liege, Is not at war with the target and You are not at War with a Vassal of your Liege. (patch 1.20.1.2)
Will the AI accept Request Military Aid?
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/10_tgp_interactions.txt.

What happens

Effects

  • If

    • You use a Hook
    • You: Has a usable Hook on the target

    Then

    • You: Use a Hook on the target
  • If played by the AI: Opinion: Grateful (+10)
  • If

    • NOT = { scope:hook = yes }
    • NOT = { scope:dominant_family = yes }

    Then

    • pay_short_term_treasury = { target = scope:recipient treasury = 50 }
  • If

    • title:h_china.holder ?= scope:recipient
    • Any character situation:

    Then

  • The character you target:
    • Influence +100
    • If played by the AI: … approves your request for troops
    • Event tgp_interaction_event.0010 (after 1–5 days)

If they refuse

  • If played by the AI: Opinion: Disappointed (-20)
  • The character you target:
    • If played by the AI: … denies your request for troops
    • If

      • The option “dominant family” is chosen

      Then

      • Influence -60

Options when sending

  • Use a Hook
  • Leverage position of Dominant Family

Events it fires: tgp_interaction_event.0010

• 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) (26 lines of game script)
is_available = government_allows = merit
trigger_if = {
	limit = {
		is_ai = yes
	}
	is_at_war = yes
}
OR = {
	is_governor = yes
	has_title = title:e_minister_grand_marshal
}
top_liege != this
government_has_mechanic = administrative
is_shown = scope:recipient = {
	government_has_mechanic = administrative
	OR = {
		this = scope:actor.top_liege
		AND = {
			has_title = title:e_minister_of_war
			liege ?= {
				tgp_has_access_to_ministry_trigger = yes
				this = scope:actor.top_liege
			}
		}
	}
}

As written in game/common/character_interactions/10_tgp_interactions.txt.

Can be sent when (is_valid…) (62 lines of game script)
custom_tooltip = {
	text = celestial_request_military_aid_no_military_governors_desc
	scope:recipient.top_liege = {
		any_vassal_or_below = {
			OR = {
				vassal_contract_has_flag = celestial_military_appointment
				vassal_contract_has_flag = meritocratic_military_appointment
			}
		}
	}
}
custom_tooltip = {
	text = celestial_request_military_aid_no_available_military_governors_desc
	scope:recipient.top_liege = {
		any_vassal_or_below = {
			tgp_celestial_military_governor_can_join_war_trigger = {
				TARGET_GOVERNOR = scope:actor
				MINISTER_OF_WAR = scope:recipient
			}
		}
	}
}
scope:actor = {
	is_at_war = yes
	is_at_war_with_liege = no
	NOR = {
		is_at_war_with = scope:recipient
		custom_tooltip = {
			text = petition_liege_vassal_war_tt
			any_war_enemy = {
				top_liege = scope:actor.top_liege
			}
		}
	}
	trigger_if = {
		limit = {
			is_at_war = yes
		}
		custom_description = {
			text = target_is_not_war_leader
			object = scope:actor
			any_character_war = {
				scope:actor = {
					is_leader_in_war = prev
				}
			}
		}
	}
}
trigger_if = {
	limit = {
		scope:actor = {
			is_ai = yes
		}
	}
	NOT = {
		scope:recipient = {
			has_variable = celestial_request_military_aid_cooldown
		}
	}
}

As written in game/common/character_interactions/10_tgp_interactions.txt.

Effects (on_send, on_accept, on_decline) (228 lines of game script)
on_send = 
on_accept = if = {
	limit = {
		scope:hook = yes
		scope:actor = {
			has_usable_hook = scope:recipient
		}
	}
	scope:actor = {
		use_hook = scope:recipient
	}
}
scope:actor = {
	if = {
		limit = {
			is_ai = yes
		}
		add_opinion = {
			target = scope:recipient
			modifier = grateful_opinion
			opinion = 10
		}
		if = {
			limit = {
				NOT = {
					has_variable = celestial_request_military_aid_cooldown
				}
			}
			set_variable = {
				name = celestial_request_military_aid_cooldown
				years = 1
			}
		}
	}
	if = {
		limit = {
			NOR = {
				scope:hook = yes
				scope:dominant_family = yes
			}
		}
		pay_short_term_treasury = {
			target = scope:recipient
			treasury = 50
		}
	}
	tgp_activate_catalyst_against_hegemon_effect = {
		HEGEMON = scope:recipient
		CATALYST = catalyst_hegemon_influenced_by_interaction
	}
}
scope:recipient.top_liege = {
	every_vassal = {
		limit = {
			tgp_celestial_military_governor_can_join_war_trigger = {
				TARGET_GOVERNOR = scope:actor
				MINISTER_OF_WAR = scope:recipient
			}
		}
		add_to_list = military_governors
	}
}
scope:actor = {
	every_character_war = {
		limit = {
			scope:actor = {
				is_leader_in_war = prev
			}
		}
		add_to_list = actor_ongoing_wars
	}
	ordered_in_list = {
		list = actor_ongoing_wars
		order_by = {
			value = 0
			if = {
				limit = {
					is_defender = scope:actor
				}
				every_war_attacker = {
					add = current_military_strength
				}
			}
			else_if = {
				limit = {
					is_attacker = scope:actor
				}
				every_war_defender = {
					add = current_military_strength
				}
			}
		}
		save_temporary_scope_value_as = {
			name = estimated_military_strength_needed
			value = {
				value = 0
				if = {
					limit = {
						is_defender = scope:actor
					}
					every_war_attacker = {
						add = current_military_strength
					}
				}
				else_if = {
					limit = {
						is_attacker = scope:actor
					}
					every_war_defender = {
						add = current_military_strength
					}
				}
			}
		}
	}
}
scope:actor = {
	random_character_war = {
		primary_defender = {
			save_scope_as = opponent
		}
	}
}
random_in_list = {
	list = military_governors
	weight = {
		base = 10
		modifier = {
			exists = scope:opponent.primary_title.title_province
			capital_county = {
				squared_distance = {
					target = scope:opponent.primary_title.title_province
					value < 10000
				}
			}
			add = 20
		}
		modifier = {
			exists = scope:opponent.primary_title.title_province
			capital_county = {
				squared_distance = {
					target = scope:opponent.primary_title.title_province
					value < 30000
				}
			}
			add = 10
		}
		modifier = {
			current_military_strength >= scope:estimated_military_strength_needed
			add = 20
		}
		modifier = {
			is_at_war = no
			add = 10
		}
		modifier = {
			is_ai = no
			add = 5
		}
	}
	save_scope_as = joining_governor
}
scope:recipient = {
	change_influence = major_influence_value
	if = {
		limit = {
			is_ai = yes
		}
		custom_tooltip = request_emperor_title_troops_approve_desc
	}
	trigger_event = {
		id = tgp_interaction_event.0010
		days = { 1 5 }
	}
}
on_decline = scope:actor = {
	if = {
		limit = {
			is_ai = yes
		}
		add_opinion = {
			target = scope:recipient
			modifier = disappointed_opinion
			opinion = -20
		}
		if = {
			limit = {
				NOT = {
					has_variable = celestial_request_military_aid_cooldown
				}
			}
			set_variable = {
				name = celestial_request_military_aid_cooldown
				years = 3
			}
		}
		else = {
			remove_variable = celestial_request_military_aid_cooldown
			set_variable = {
				name = celestial_request_military_aid_cooldown
				years = 3
			}
		}
	}
	hidden_effect = {
		send_interface_message = {
			type = msg_admin_provincial_army_request_denied
			title = msg_admin_provincial_army_request_denied.title
			desc = msg_admin_provincial_army_request_denied.desc
			left_icon = scope:recipient
			right_icon = scope:target
		}
	}
}
scope:recipient = {
	if = {
		limit = {
			is_ai = yes
		}
		custom_tooltip = request_emperor_title_troops_deny_desc
	}
	if = {
		limit = {
			scope:dominant_family = yes
		}
		change_influence = medium_influence_loss
	}
}

As written in game/common/character_interactions/10_tgp_interactions.txt.

Category
Vassal actions
Cooldown
30 days
In the menu
under More…
ID
celestial_request_military_aid_interaction

Source: game/common/character_interactions/10_tgp_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?