Interaction · Diplomatic actions
Declare War
Use a Casus Belli to declare War on the recipient
What you need
You
To send it
- If your Government is a Theocratic-type Government: Cannot declare Claim, De Jure, conquest, invasion, Vassalization or subjugation Wars. Only Holy Wars, independence wars, and wars started by events are available.
- Otherwise:
has_any_display_cb_on = scope:recipient
- You have sworn to not declare any wars!
- Is not incapable
If
NOT = { has_cb_on = { target = scope:defender_check casus_belli = pam_humiliation_cb } }
Then
can_attack_in_hierarchy = scope:defender_check
- If your government does not have the can start war with raised troops flag: Not: Armies are raised
NOT = { is_allied_in_war = scope:defender_check }- The defender check:
- … is a Herder and cannot be attacked. To get their lands you can either: Use the Demand Pastureland Interaction · Attack their Suzerain to transfer them as a Tributary
- Is not a tributary of the attacker check or of the attacker check’s suzerains
- Does not have a Strong Hook on the attacker check
- If imprisoned: You cannot declare war on your own Prisoner
If
liege != this
Then
- If you has administrative government mechanic:
If
top_liege = scope:defender_check.top_liege
Then
Otherwise
If
- Your top liege:
has_realm_law_flag = admin_vassal_wars_banned
Then
- Your top liege:
- Otherwise:
If
- Is an Independent Ruler
liege != scope:recipientNot all of these
- you has administrative government mechanic
- Your liege: they has administrative government mechanic
NOT = { vassal_contract_has_flag = vassal_contract_war_override }One of these
All of these
liege = scope:recipient.liege- Your liege:
has_realm_law_flag = vassal_internal_wars_banned
or
Your liege:has_realm_law_flag = vassal_all_wars_banned
Then
has_usable_hook = liege
If
- The defender check:
One of these
has_subject_contract_group = tributary_celestialor
has_subject_contract_group = tributary_hegemonic
- Is not an Independent Ruler
Then
None of these
- The defender check:
is_tributary_of = scope:attacker_check.top_liege
- The defender check:
- The defender check:
- The attacker check › If has a Adventurer Government: Your Camp is located in … Realm
If
- The attacker check: Is a member of a Confederation
Then
None of these
- The defender check:
is_member_of_confederation = scope:attacker_check.confederation
- The defender check:
- Is not at war with the target
Also needed: not imprisoned
To see it in the menu
- The target is not you
- The target is not you
- Is not at war with the target
The character you target
Declare War is a diplomatic character interaction in Crusader Kings III. You need: You have sworn to not declare any wars!, Is not incapable, Is not imprisoned and 1 more. Accepted automatically. Patch 1.20.1.2, from game/common/character_interactions/00_war.txt.
Quick answers (2)
- What are the requirements for Declare War in CK3?
- You: You have sworn to not declare any wars!, Is not incapable, Is not imprisoned and Is not at war with the target. (patch 1.20.1.2)
- Will the AI accept Declare War?
- Yes: it is accepted automatically.
Will they accept?
The other character has no choice: the game accepts it automatically.
What happens
Effects
If
- Has the target as lover
- Does not have the target as rival
- Any character war:
casus_belli = { … }
Then
- The character you target: Event lover.0103 (after 14–30 days)
- The character you target:
If
- Any character war:
primary_attacker = { … }
Then
- Every character war:
- Where:
primary_attacker = { … }
end_war = invalidatedprimary_attacker = { trigger_event = war_event.1001 }
- Where:
- Any character war:
- The character you target:
If
- Any vassal › Any character war:
casus_belli = { … }
Then
- Every vassal:
- Where › Any character war:
casus_belli = { … }
- Declared war on …
- Where › Any character war:
- Any vassal › Any character war:
Options when sending
- Use a Hook
Events it fires: vassal.2610, lover.0103
• 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) (10 lines of game script)
is_shown = scope:recipient != scope:puppet_or_actor
scope:recipient != scope:actor
scope:recipient = {
is_playable_character = yes
}
scope:puppet_or_actor ?= {
NOT = {
is_at_war_with = scope:recipient
}
}As written in game/common/character_interactions/00_war.txt.
Can be sent when (is_valid…) (17 lines of game script)
scope:puppet_or_actor = {
trigger_if = {
limit = {
government_has_flag = government_is_theocracy
}
custom_tooltip = {
text = theocratic_government_war_restriction
has_any_display_cb_on = scope:recipient
}
}
trigger_else = {
has_any_display_cb_on = scope:recipient
}
allows_declaring_war_against_target_trigger = {
TARGET = scope:recipient
}
}As written in game/common/character_interactions/00_war.txt.
Effects (on_send, on_accept, on_decline) (174 lines of game script)
on_accept = scope:puppet_or_actor = {
hidden_effect = {
send_interface_toast = {
type = event_toast_effect_neutral
title = declare_war_interaction_notification
left_icon = scope:puppet_or_actor
right_icon = scope:recipient
custom_tooltip = declare_war_interaction_notification_tooltip
show_as_tooltip = {
if = {
limit = {
always = scope:hook
}
use_hook = liege
}
}
}
}
if = {
limit = {
exists = var:promised_war
var:promised_war = {
is_alive = yes
this != scope:recipient
}
}
trigger_event = {
id = vassal.2610
days = { 7 10 }
}
}
if = {
limit = {
always = scope:hook
}
use_hook = liege
}
if = {
limit = {
has_relation_lover = scope:recipient
NOT = {
has_relation_rival = scope:recipient
}
any_character_war = {
casus_belli = {
primary_attacker = scope:puppet_or_actor
primary_defender = scope:recipient
any_target_title = { }
}
}
}
scope:recipient = {
trigger_event = {
id = lover.0103
days = { 14 30 }
}
}
}
scope:recipient = {
if = {
limit = {
any_character_war = {
primary_attacker = {
is_vassal_or_below_of = scope:puppet_or_actor
trigger_if = {
limit = {
this = {
is_ai = no
}
}
scope:actor = {
is_ai = no
}
}
}
}
}
every_character_war = {
limit = {
primary_attacker = {
is_vassal_or_below_of = scope:puppet_or_actor
trigger_if = {
limit = {
this = {
is_ai = no
}
}
scope:actor = {
is_ai = no
}
}
}
}
show_as_tooltip = {
end_war = invalidated
}
primary_attacker = {
trigger_event = war_event.1001
}
}
}
}
scope:recipient = {
if = {
limit = {
any_vassal = {
save_temporary_scope_as = attacked_vassal
any_character_war = {
casus_belli = {
primary_attacker = scope:puppet_or_actor
primary_defender = scope:recipient
any_target_title = {
holder = {
OR = {
this = scope:attacked_vassal
is_vassal_or_below_of = scope:attacked_vassal
}
}
}
}
}
}
}
every_vassal = {
save_temporary_scope_as = attacked_vassal
limit = {
any_character_war = {
casus_belli = {
primary_attacker = scope:puppet_or_actor
primary_defender = scope:recipient
any_target_title = {
holder = {
OR = {
this = scope:attacked_vassal
is_vassal_or_below_of = scope:attacked_vassal
}
}
}
}
}
}
send_interface_toast = {
type = msg_war_declared_on_liege
title = declare_war_interaction_notification
left_icon = scope:puppet_or_actor
right_icon = scope:recipient
custom_tooltip = declare_war_interaction_notification_tooltip
}
}
}
}
if = {
limit = {
has_variable = admin_permission_to_declare_war
}
remove_variable = admin_permission_to_declare_war
}
}
hidden_effect = {
if = {
limit = {
scope:is_puppet_action ?= yes
}
scope:actor = {
send_interface_toast = {
type = event_toast_effect_neutral
title = declare_war_interaction_notification
left_icon = scope:puppet_or_actor
right_icon = scope:recipient
custom_tooltip = declare_war_interaction_notification_tooltip
}
}
}
}As written in game/common/character_interactions/00_war.txt.
- Category
- Diplomatic actions
- In the menu
- main list
- ID
declare_war_interaction
Source: game/common/character_interactions/00_war.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.