CK3 DatabaseCrusader Kings III · 1.20.0.3 “Crozier” · unofficial

Casus belli · Holy wars

Holy

The war is called “Holy War for the …”

Holy is a casus belli in Crusader Kings III (holy wars). If the attacker wins: Within the target Title, all titles held by … rulers are seized, and any … rulers are vassalized by the attacker. If the defender wins: No Titles change hands. Declaring it costs piety. The war goal is worth 80% war score. Patch 1.20.0.3, from game/common/casus_belli_types/00_religious_war.txt.

Quick answers (3)
What do you get for winning a Holy war in CK3?
Within the target Title, all titles held by … rulers are seized, and any … rulers are vassalized by the attacker (patch 1.20.0.3).
What happens on a white peace?
No Titles change hands.
What does the Holy casus belli cost?
piety; the amount depends on the titles, claims and distance, worked out when you declare.

How the war ends

Attacker wins

Within the target Title, all titles held by … rulers are seized, and any … rulers are vassalized by the attacker.

White peace

No Titles change hands.

Defender wins

No Titles change hands.

If the war becomes invalid

The … has ended: the defender no longer … any land in the target region.

Who can declare it

The game shows no text of its own for these conditions; the script is below.

Every holy wars war (the group's allowed_for_character) (24 lines of game script)
OR = {
	top_liege = this
	any_liege_or_above = {
		faith = prev.faith
		count = all
	}
}
faith = {
	NOR = {
		has_doctrine_parameter = unreformed
		AND = {
			has_doctrine_parameter = holy_wars_forbidden
			NOT = {
				prev = {
					has_character_flag = bonus_major_holy_war
				}
			}
		}
	}
}
herders_and_tributary_constraints = yes
pam_personal_pacifism_offensive_war_ban_trigger = yes
tgp_dynastic_cycle_offensive_wars_ban_trigger = yes
tgp_war_ban_all_ministers_trigger = yes

As written in game/common/casus_belli_groups/00_casus_belli_groups.txt.

Attacker (allowed_for_character) (10 lines of game script)
scope:attacker.faith = {
	NOR = {
		has_doctrine_parameter = unreformed
		has_doctrine_parameter = holy_wars_forbidden
	}
}
NOR = {
	government_has_flag = government_is_nomadic
	government_has_flag = government_is_celestial
}

As written in game/common/casus_belli_types/00_religious_war.txt.

Defender (allowed_against_character) (9 lines of game script)
scope:attacker = {
	is_valid_religious_war_target_trigger = {
		TARGET = scope:defender
	}
	ALL_FALSE = {
		top_liege = scope:defender.top_liege
		liege = scope:defender
	}
}

As written in game/common/casus_belli_types/00_religious_war.txt.

When it can start (valid_to_start) (44 lines of game script)
scope:target = {
	tier = tier_duchy
	is_landless_type_title = no
}
scope:target = {
	trigger_if = {
		limit = {
			scope:attacker = {
				is_ai = yes
			}
		}
		any_in_de_jure_hierarchy = {
			continue = {
				tier > tier_county
			}
			count >= 2
			tier = tier_county
			holder ?= {
				OR = {
					this = scope:defender
					is_vassal_or_below_of = scope:defender
				}
			}
		}
	}
}
trigger_if = {
	limit = {
		scope:attacker = {
			any_character_struggle = {
				involvement = involved
				is_struggle_type = iberian_struggle
			}
		}
		scope:defender = {
			any_character_struggle = {
				involvement = involved
				is_struggle_type = iberian_struggle
			}
		}
	}
	are_holy_wars_disabled_in_struggle_phase_trigger = yes
}
are_holy_wars_disabled_by_struggle_conciliation_trigger = no

As written in game/common/casus_belli_types/00_religious_war.txt.

Cost to declare

Costs piety. The amount is worked out when you declare (by the titles targeted, claims, distance and more), so the script is shown as written:

Cost (90 lines of game script)
piety = {
	add = {
		value = 200
		desc = CB_BASE_COST
	}
	multiply = common_cb_piety_cost_multiplier
	multiply = holy_war_cb_piety_cost_multiplier
	if = {
		limit = {
			scope:attacker = {
				top_participant_group:the_christian_church ?= {
					has_participant_group_parameter = the_christian_church_cheaper_religious_wars
				}
			}
		}
		multiply = {
			value = 0.75
			desc = pam_the_christian_church_cheaper_religious_wars_desc
		}
	}
	if = {
		limit = {
			scope:attacker.house = {
				OR = {
					has_house_modifier = fp2_struggle_hostility_house_faith_modifier
					has_house_modifier = fp2_struggle_hostility_house_combined_modifier
				}
			}
			any_in_global_list = {
				variable = fp2_struggle_ending_faith_list
				this = scope:attacker.faith
			}
			any_in_global_list = {
				variable = fp2_struggle_ending_faith_list
				this = scope:defender.faith
			}
		}
		divide = {
			value = 2
			desc = CB_COST_FP2_STRUGGLE_HOSTILITY_FAITH_DISCOUNT
		}
	}
	if = {
		limit = {
			has_global_variable = fp2_struggle_compromise_ending
			any_in_global_list = {
				variable = fp2_struggle_ending_faith_list
				this = scope:attacker.faith
			}
			any_in_global_list = {
				variable = fp2_struggle_ending_faith_list
				this = scope:defender.faith
			}
		}
		multiply = {
			value = 2
			desc = CB_COST_FP2_STRUGGLE_COMPROMISE_MULTIPLIER
		}
	}
	if = {
		limit = {
			scope:attacker = {
				any_active_accolade = {
					accolade_parameter = acclaimed_knight_piety_from_battle
				}
			}
		}
		multiply = accolade_piety_reduction_value
		min = 25
	}
	if = {
		limit = {
			scope:attacker = {
				any_active_accolade = {
					accolade_parameter = acclaimed_knight_piety_from_battle_high
				}
			}
		}
		multiply = accolade_piety_reduction_value_high
		min = 25
	}
	if = {
		limit = {
			scope:attacker = {
				has_character_flag = holy_war_incited
			}
		}
		multiply = 0
	}
}

As written in game/common/casus_belli_types/00_religious_war.txt.

Source: game/common/casus_belli_types/00_religious_war.txt and the English localisation, Crusader Kings III 1.20.0.3. “The attacker”, “the defender” stand where the game names the character; “…” marks other words it fills in during play.