﻿# Pilgrims and Preachers - helper triggers for events/ppr_preaching_events.txt
#
# Scopes saved by ppr_on_preaching_completion (common/on_action/ppr_preaching_on_actions.txt)
# and carried into the events:
#   scope:preacher       the Pilgrims adventurer who owns the missionary army (a player)
#   scope:preach_county  the county title preached in
#   scope:preach_barony  the barony title preached in
#   scope:preach_holder  the county holder (may not exist)
# These triggers only use saved scopes, never root, so they work both in the on_action
# (where root is the army) and in the events (where root is the preacher or the holder).

# Everything still in place for a preaching event.
ppr_preaching_event_base_trigger = {
	exists = scope:preacher
	exists = scope:preach_county
	exists = scope:preach_barony
	scope:preacher = {
		is_alive = yes
		is_imprisoned = no
		is_landless_adventurer = yes
		has_realm_law = ppr_camp_purpose_pilgrims
	}
}

# Is the county's faith hostile (or worse) to the preacher's? Same test as the alms toast.
ppr_preaching_county_hostile_trigger = {
	scope:preach_county.faith = {
		faith_hostility_level = {
			target = scope:preacher.faith
			value >= faith_hostile_level
		}
	}
}

# The holder saved at completion still holds the county.
ppr_preaching_holder_present_trigger = {
	exists = scope:preach_holder
	scope:preach_holder = {
		is_alive = yes
		is_imprisoned = no
	}
	scope:preach_county.holder ?= scope:preach_holder
}

# Character scope. Is this character pledged in a great holy war, on either side of the preacher's faith?
ppr_preaching_in_great_holy_war_trigger = {
	save_temporary_scope_as = ppr_ghw_character
	OR = {
		faith.great_holy_war ?= { has_pledged_attacker = scope:ppr_ghw_character }
		scope:preacher.faith.great_holy_war ?= { has_pledged_defender = scope:ppr_ghw_character }
	}
}

# Could the holder sensibly be won over to the preacher's faith?
# Mirrors vanilla valid_demand_conversion_conditions_trigger and the can_change_faith rule
# (00_rules.txt), and skips religious heads, theocrats, holy orders and GHW participants.
ppr_preaching_holder_can_convert_trigger = {
	ppr_preaching_holder_present_trigger = yes
	scope:preach_holder = {
		is_adult = yes
		NOT = { faith = scope:preacher.faith }
		NOT = { faith.religious_head ?= this }
		NOR = {
			has_trait = devoted
			has_trait = order_member
			has_character_flag = ai_will_not_convert
			government_has_flag = government_is_theocracy
			government_has_flag = government_is_holy_order
			has_title = title:k_papal_state
			has_title = title:k_orthodox
			is_at_war_with = scope:preacher
		}
		NOT = { ppr_preaching_in_great_holy_war_trigger = yes }
		NOT = {
			any_held_title = {
				has_clerical_region = yes
				title_capital_county = {
					faith != scope:preacher.faith
				}
			}
		}
		trigger_if = {
			limit = { has_variable = cannot_be_converted_by_value }
			NOT = { var:cannot_be_converted_by_value = scope:preacher }
		}
	}
}

# The county shares the preacher's faith but follows another rite.
ppr_preaching_county_other_rite_trigger = {
	scope:preach_county.faith = scope:preacher.faith
	scope:preach_county.rite != scope:preacher.rite
}

# An AI holder of the preacher's faith but another rite, who could adopt the preacher's rite.
ppr_preaching_holder_other_rite_trigger = {
	ppr_preaching_holder_present_trigger = yes
	scope:preach_holder = {
		is_ai = yes
		top_liege = { is_ai = yes }
		is_adult = yes
		faith = scope:preacher.faith
		NOT = { rite = scope:preacher.rite }
		NOT = { faith.religious_head ?= this }
		NOR = {
			has_character_flag = ai_will_not_convert
			government_has_flag = government_is_theocracy
			government_has_flag = government_is_holy_order
		}
	}
}

# The county is held by the AI holder saved at completion. Gates every change to the county
# itself (faith, rite, control or development loss): a player's lands never suffer another
# player's choice. Beneficial county modifiers (blessing, seeds of faith) are applied to all.
ppr_preaching_county_held_by_ai_trigger = {
	exists = scope:preach_holder
	scope:preach_holder = {
		is_ai = yes
		# Not an AI vassal of another player either
		top_liege = { is_ai = yes }
	}
	scope:preach_county.holder ?= scope:preach_holder
}

######################################################################
# Validity of each event (checked by the roll and again by the event)
######################################################################

# 0001 The Lord Listens
ppr_preaching_lord_listens_valid_trigger = {
	ppr_preaching_event_base_trigger = yes
	NOT = { ppr_preaching_county_hostile_trigger = yes }
	ppr_preaching_holder_can_convert_trigger = yes
}

# 0010 The Crowd Converts
ppr_preaching_crowd_converts_valid_trigger = {
	ppr_preaching_event_base_trigger = yes
	NOT = { ppr_preaching_county_hostile_trigger = yes }
	scope:preach_county.faith != scope:preacher.faith
}

# 0020 Our Fathers' Rite
ppr_preaching_fathers_rite_valid_trigger = {
	ppr_preaching_event_base_trigger = yes
	OR = {
		ppr_preaching_county_other_rite_trigger = yes
		ppr_preaching_holder_other_rite_trigger = yes
	}
}

# 0030 Spreading the Tenets
ppr_preaching_tenets_valid_trigger = {
	ppr_preaching_event_base_trigger = yes
	scope:preach_county.faith = scope:preacher.faith
	scope:preacher = {
		has_pam_dlc_trigger = yes
		faith = { has_tenet_popularity_trigger = yes }
		any_personal_tenet = {
			ppr_tenet_not_core_for_trigger = { CHARACTER = scope:preacher }
		}
	}
}

# 0040 A Vocation (the camp has 20 followers or fewer)
ppr_preaching_vocation_valid_trigger = {
	ppr_preaching_event_base_trigger = yes
	NOT = { ppr_preaching_county_hostile_trigger = yes }
	scope:preacher = {
		NOT = { any_courtier = { count >= 21 } }
	}
}

# 0050 Blessing of the Land, and the risk events 0100-0120
ppr_preaching_friendly_land_valid_trigger = {
	ppr_preaching_event_base_trigger = yes
	NOT = { ppr_preaching_county_hostile_trigger = yes }
}

# 0200 Stones and Insults, 0210 A Secret Flock
ppr_preaching_hostile_land_valid_trigger = {
	ppr_preaching_event_base_trigger = yes
	ppr_preaching_county_hostile_trigger = yes
}

# 0120 Fever among the Crowd: a follower who could be sent to tend the sick.
ppr_preaching_fever_helper_trigger = {
	ppr_camp_events_available_courtier_trigger = yes
	NOT = { has_trait = ill }
}

# Root = the Pilgrims adventurer, scope:army = one of their armies. Is the army at the camp itself
# (the very barony where it stands, not just its county)?
ppr_missionaries_at_camp_trigger = {
	exists = domicile
	scope:army.location ?= domicile.domicile_location
}
