﻿#################################################
# TRIGGER LIST 									#
#################################################
# ep1_is_valid_character_for_inspiration_trigger 	- Is the character valid to be used within the inspiration system? Character movement may break if these conditions are not true.

ep1_is_valid_character_for_inspiration_trigger = {
	is_adult = yes
	is_imprisoned = no
	NOT = { exists = inspiration }

	trigger_if = {
		limit = {
			OR = {
				is_pool_guest = yes
				is_in_pool_at = location
			}
		}
		# For simplicity, inspired characters travel solo for now.
		any_traveling_family_member = {
			count = 1
		}
	}
}

ep1_spare_courtier_trigger = { #Used for picking out courtiers in your own court.
	is_available_healthy_ai_adult = yes
	is_councillor = no
	NOR = {
		is_close_or_extended_family_of = root
		is_spouse_of = root
	}
}

# Court type trait 1 is unlocked by court_grandeur_level 5
ep1_courtier_valid_for_court_trait_1_trigger = {
	scope:cgv_value >= cgv_level_threshold_court_type_trait_1
	NOT = { has_trait = $TYPE$_court }
	is_adult = yes
}

# Court type trait 2 is unlocked by court_grandeur_level 8
ep1_courtier_valid_for_court_trait_2_trigger = {
	scope:cgv_value >= cgv_level_threshold_court_type_trait_2
	NOT = { has_trait = $TYPE$_court_2 }
	has_trait = $TYPE$_court_1
	is_adult = yes
}

##############
# INSPIRATION/ARTIFACT TRIGGERS
##############

ep1_can_sponsor_inspiration_basic = {
	scope:inspiration_owner = {
		is_imprisoned = no
	}
}

ep1_is_sponsor_valid_inspiration_basic = {
	trigger_if = {
		limit = {
			exists = scope:inspiration_sponsor
		}
		scope:inspiration_owner = {
			is_courtier_of = scope:inspiration_sponsor
			is_imprisoned = no
		}
	}
}

ep1_character_had_or_has_inspiration_type_trigger = {
	OR = {
		AND = {
			exists = var:created_artifact_type
			var:created_artifact_type = flag:$TYPE$
		}
		inspiration ?= { has_inspiration_type = $TYPE$_inspiration }
	}
}

ep1_no_artifact_decorations_trigger = {
	OR = {
		scope:wealth < 40
		AND = {
			exists = scope:inspiration_owner
			scope:inspiration_owner = {	has_trait = humble }
		}
	}
}

ep1_simple_artifact_decorations_trigger = {
	scope:wealth >= 5
	scope:wealth < 70
}

ep1_advanced_artifact_decorations_trigger = {
	scope:wealth >= 40
	scope:wealth < 90
}

ep1_extravagant_artifact_decorations_trigger = {
	scope:wealth >= 70
}

ep1_artifact_durability_lower_equal_percent_trigger = {
	$PERCENT$ > {
	 	value = 0
	 	add = artifact_durability
	 	divide = artifact_max_durability
	}
}

ep1_artifact_durability_higher_equal_percent_trigger = {
	$PERCENT$ < {
	 	value = 0
	 	add = artifact_durability
	 	divide = artifact_max_durability
	}
}

ep1_character_has_court_artifact_trigger = {
	any_character_artifact = {
		ep1_artifact_is_court_artifact_trigger = yes
	}
}

ep1_artifact_is_court_artifact_trigger = {
	OR = {
		artifact_slot_type = wall_big
		artifact_slot_type = wall_small
		artifact_slot_type = sculpture
		artifact_slot_type = book
		artifact_slot_type = throne
		artifact_slot_type = pedestal
	}
}


##############
# COURT POSITION TRIGGERS
##############

#Used to see if the scoped character has ANY court position that CHARACTER can hold
character_can_be_employed_in_a_court_position_trigger = {
	OR = {
		AND = {
			can_employ_court_position_type = court_physician_court_position
			$CHARACTER$ = { can_be_employed_as = court_physician_court_position }
		}
		AND = {
			can_employ_court_position_type = master_of_horse_court_position
			$CHARACTER$ = { can_be_employed_as = master_of_horse_court_position }
		}
		AND = {
			can_employ_court_position_type = master_of_hunt_court_position
			$CHARACTER$ = { can_be_employed_as = master_of_hunt_court_position }
		}
		AND = {
			can_employ_court_position_type = keeper_of_swans_court_position
			$CHARACTER$ = { can_be_employed_as = keeper_of_swans_court_position }
		}
		AND = {
			can_employ_court_position_type = travel_leader_court_position
			$CHARACTER$ = { can_be_employed_as = travel_leader_court_position }
		}
		AND = {
			can_employ_court_position_type = court_jester_court_position
			$CHARACTER$ = { can_be_employed_as = court_jester_court_position }
		}
		AND = {
			can_employ_court_position_type = high_almoner_court_position
			$CHARACTER$ = { can_be_employed_as = high_almoner_court_position }
		}
		AND = {
			can_employ_court_position_type = seneschal_court_position
			$CHARACTER$ = { can_be_employed_as = seneschal_court_position }
		}
		AND = {
			can_employ_court_position_type = court_tutor_court_position
			$CHARACTER$ = { can_be_employed_as = court_tutor_court_position }
		}
		AND = {
			can_employ_court_position_type = court_guru_court_position
			$CHARACTER$ = { can_be_employed_as = court_guru_court_position }
		}
		AND = {
			can_employ_court_position_type = cupbearer_court_position
			$CHARACTER$ = { can_be_employed_as = cupbearer_court_position }
		}
		AND = {
			can_employ_court_position_type = chief_eunuch_court_position
			$CHARACTER$ = { can_be_employed_as = chief_eunuch_court_position }
		}
		AND = {
			can_employ_court_position_type = antiquarian_court_position
			$CHARACTER$ = { can_be_employed_as = antiquarian_court_position }
		}
		AND = {
			can_employ_court_position_type = royal_architect_court_position
			$CHARACTER$ = { can_be_employed_as = royal_architect_court_position }
		}
		AND = {
			can_employ_court_position_type = lady_in_waiting_court_position
			$CHARACTER$ = { can_be_employed_as = lady_in_waiting_court_position }
		}
		AND = {
			can_employ_court_position_type = court_poet_court_position
			$CHARACTER$ = { can_be_employed_as = court_poet_court_position }
		}
		AND = {
			can_employ_court_position_type = court_musician_court_position
			$CHARACTER$ = { can_be_employed_as = court_musician_court_position }
		}
		AND = {
			can_employ_court_position_type = bodyguard_court_position
			$CHARACTER$ = { can_be_employed_as = bodyguard_court_position }
		}
		AND = {
			can_employ_court_position_type = champion_court_position
			$CHARACTER$ = { can_be_employed_as = champion_court_position }
		}
		AND = {
			can_employ_court_position_type = food_taster_court_position
			$CHARACTER$ = { can_be_employed_as = food_taster_court_position }
		}
		AND = {
			can_employ_court_position_type = executioner_court_position
			$CHARACTER$ = { can_be_employed_as = executioner_court_position }
		}
		AND = {
			can_employ_court_position_type = garuda_court_position
			$CHARACTER$ = { can_be_employed_as = garuda_court_position }
		}
		AND = {
			can_employ_court_position_type = wet_nurse_court_position
			$CHARACTER$ = { can_be_employed_as = wet_nurse_court_position }
		}
		AND = {
			can_employ_court_position_type = akolouthos_court_position
			$CHARACTER$ = { can_be_employed_as = akolouthos_court_position }
		}
	}
}


#Used to check if the scoped character can hold any court position
can_be_employed_in_any_court_position_trigger = {
	OR = {
		can_be_employed_as = court_physician_court_position
		can_be_employed_as = master_of_horse_court_position
		can_be_employed_as = master_of_hunt_court_position
		can_be_employed_as = keeper_of_swans_court_position
		can_be_employed_as = court_jester_court_position
		can_be_employed_as = high_almoner_court_position
		can_be_employed_as = seneschal_court_position
		can_be_employed_as = court_tutor_court_position
		can_be_employed_as = court_guru_court_position
		can_be_employed_as = cupbearer_court_position
		can_be_employed_as = chief_eunuch_court_position
		can_be_employed_as = antiquarian_court_position
		can_be_employed_as = royal_architect_court_position
		can_be_employed_as = lady_in_waiting_court_position
		can_be_employed_as = court_poet_court_position
		can_be_employed_as = court_musician_court_position
		can_be_employed_as = bodyguard_court_position
		can_be_employed_as = champion_court_position
		can_be_employed_as = food_taster_court_position
		can_be_employed_as = executioner_court_position
		can_be_employed_as = garuda_court_position
		can_be_employed_as = travel_leader_court_position
		can_be_employed_as = wet_nurse_court_position
		can_be_employed_as = akolouthos_court_position
	}
}

##### Hold court

hold_court_8010_county_trigger = {
	any_title_to_title_neighboring_county = {
		holder.top_liege = {
			NOR = {
				THIS = ROOT
				is_allied_to = ROOT
				is_at_war_with = ROOT
				is_close_or_extended_family_of = ROOT
				max_military_strength < hold_court_8010_75_strength_value # 75% of ROOT's soldiers
			}
		}
	}
}

target_of_powerful_faction_trigger = {
	exists = yes
	OR = {
		faction_is_type = liberty_faction
		faction_is_type = claimant_faction
	}
	OR = {
		faction_power >= faction_power_threshold
		faction_is_at_war = yes
	}
	trigger_if = {
		limit = { exists = special_character }
		special_character != faction_target.liege
	}
}

province_has_no_holding_trigger = { # province has no holding
	has_ongoing_construction = no
	NOR = {
		has_holding_type = castle_holding
		has_holding_type = tribal_holding
		has_holding_type = city_holding
		has_holding_type = church_holding
		has_holding_type = herder_holding
		has_holding_type = nomad_holding
		has_holding_type = temple_citadel_holding
	}
}

county_has_all_holding_types = { # county has all three holding types
	any_county_province = { has_holding_type = castle_holding }
	any_county_province = { has_holding_type = city_holding }
	any_county_province = { has_holding_type = church_holding }
}

county_has_empty_province_trigger = {
	tier = tier_county
	any_county_province = { province_has_no_holding_trigger = yes }
}

county_has_no_city_trigger = { # No city in a county
	NOT = {
		any_county_province = { has_holding_type = city_holding }
	}
}

county_has_no_church_trigger = { # No church in a county
	NOT = {
		any_county_province = { has_holding_type = church_holding }
	}
}

##############
# DECISION TRIGGERS
##############

order_mass_eviction_decision_evictable_courtier_trigger = {
	NOR = {
		is_of_major_or_minor_interest_trigger = { CHARACTER = root }
		any_close_family_member = {
			host = root
			is_of_major_or_minor_interest_trigger = { CHARACTER = root }
		}
	}
}

# For technical reasons, this trigger can't be the same as ep1_decision_0111_list_builder_guts_trigger, but maintains (almost) technical parity with it.
exoticise_a_grand_hall_decision_list_builder_guts_trigger = {
	# Is the title presently active?
	exists = holder
	# Can the two communicate?
	holder = {
		# Filter out anyone who has the right rank but lacks a mechanical royal court.
		has_royal_court = yes
		has_dlc_feature = royal_court
		# Can the two communicate?
		in_diplomatic_range = root
	}
}

##############
# CHARACTER INTERACTIONS TRIGGERS
##############

indebt_guest_interaction_basic_checks_trigger = {
	$ACTOR$ = {
		# Gotta have a royal court.
		has_royal_court = yes
		has_dlc_feature = royal_court
		# Gotta have maxed servants to help.
		amenity_level = {
			target = court_servants
			value >= max_amenity_level
		}
	}
}

##############
# BANNER TRIGGERS
##############

artifact_house_not_owns_or_claims_trigger = {
	exists = scope:familial_banner
	NOR = {
		this = scope:familial_banner.artifact_owner.house
		has_house_artifact_claim = scope:familial_banner
	}
	trigger_if = {
		limit = { exists = scope:familial_banner.var:banner_dynasty }
		house_head.dynasty = scope:familial_banner.var:banner_dynasty
	}
}

is_composite_bow_culture_trigger = {
	OR = {
		has_cultural_tradition = tradition_horse_lords
		has_cultural_pillar = heritage_byzantine
		has_cultural_pillar = heritage_caucasian
		has_cultural_pillar = heritage_turkic
		has_cultural_pillar = heritage_mongolic
		has_innovation = innovation_advanced_bowmaking
	}
}
