﻿regula_covert_conversion = {
	category = religious

	is_valid = {
		scope:secret_owner = {
			is_regula_trigger = no
		}
	}

	# Shunned if they are not spellbound (and are female)
	is_shunned = {
		scope:target = {
			# If we are spellbound, dont care
			NOT = {
				any_secret = {
					secret_type = regula_covert_conversion
				}
			}

			# Only females "shun" instead of thinking this is criminal
			is_female = yes
		}
	}

	# Only viewed as criminal by other men and when the target is Magister
	is_criminal = {
		# Only Magister secret is criminal
		scope:secret_owner = {
			is_male = yes
		}

		scope:target = {
			# If we are spellbound, dont care
			NOT = {
				any_secret = {
					secret_type = regula_covert_conversion
				}
			}

			# Only men think spellbound is criminal
			is_male = yes
		}
	}

	on_expose = {
		save_scope_as = secret

		secret_owner = {
			save_scope_as = owner
		}
		if = {
			limit = { exists = secret_target }
			secret_target = { save_scope_as = target }
		}

		#Save spouses, close family members, liege and anyone whom I am primary heir of
		scope:owner = {
			save_list_targets_for_secret_exposure_events_effect = { SECRET = scope:secret CHARACTER = scope:owner }
		}

		#Send the notification event
		every_in_list = {
			list = send_exposed_secret_event_list

			trigger_event = secrets.0107

		}

		### Sending feed messages to other characters who care ###
		scope:owner = {
			#Save secret knowers and extended family members for feed messages
			save_list_targets_for_secret_exposure_feed_messages_effect = { SECRET = scope:secret CHARACTER = scope:owner }
		}

		every_in_list = {
			list = send_exposed_secret_feed_message_list
			save_scope_as = secret_expose_feed_message_scope

			send_interface_message = {
				type = secret_exposed_message
				left_icon = scope:owner
				title = secret_exposed_notification_effect_message
				desc = secret_exposed_notification_effect_message_witch

				if = {
					limit = { has_hook_from_secret = scope:secret }
					if = {
						limit = {
							has_hook_of_type = {
								target = scope:owner
								type = weak_blackmail_hook
							}
						}
						remove_hook = {
							target = scope:owner
							type = weak_blackmail_hook
						}
					}
					else_if = {
						limit = {
							has_hook_of_type = {
								target = scope:owner
								type = strong_blackmail_hook
							}
						}
						remove_hook = {
							target = scope:owner
							type = strong_blackmail_hook
						}
					}
				}
			}
		}

		### Send toast to exposer ###
		if = {
			limit = {
				trigger_if = {
					limit = { exists = scope:target }
					NOR = {
						scope:secret_exposer = scope:target
						scope:secret_exposer = scope:owner
					}
				}
				trigger_else = {
					NOT = { scope:secret_exposer = scope:owner }
				}
			}
			scope:secret_exposer = {
				save_scope_as = secret_expose_feed_message_scope
				send_interface_toast = {
					left_icon = scope:owner
					title = secret_exposed_notification_effect_message

					custom_tooltip = secret_exposed_notification_effect_message_witch.i_exposed

					if = {
						limit = { has_hook_from_secret = scope:secret }
						remove_hook = {
							target = scope:owner
							type = weak_blackmail_hook
						}
					}
				}
			}
		}

		scope:secret_owner = {
			if = {
				limit = {
					NOT = {
						this = scope:secret_exposer
					}
					is_male = yes # The house of cards only comes down when the PC is revealed.
				}
				trigger_event = regula_initialize_event.0008
			}
		}
	}
}

# Secret which represents the collected information about the a scouted
# character's schedule which allows them to be abducted easily during a raid.
# Should only have a single owner / participant, and will be known by the
# Magister player character as part of creating the secret.
regula_scouted_target_secret = {
	category = regula_scouted_target

	is_valid = {
		# Secret should cease to exist after enough time has passed (modifier
		# expires) of if the owner gains the magister either in the vassalage
		# heirarchy or as an imprisoner.
		# Also if character leaves diplomatic range (of Magister), its safe
		# to stay that the secret should be invalidated.
		scope:secret_owner = {
			has_character_modifier = regula_scouted_target_modifier
			in_diplomatic_range = global_var:magister_character
			NOT = {
				OR = {
					target_is_same_character_or_above = global_var:magister_character
					is_imprisoned_by = global_var:magister_character
				}
			}
		}
	}

	is_shunned = {
		# Secret is essentially schedule being known.
		# Never criminal on its own.
		always = no
	}

	is_criminal = {
		# Secret is essentially schedule being known.
		# Never criminal on its own.
		always = no
	}

	on_expose = {
		scope:secret_owner = {
			add_character_modifier = {
				modifier = on_edge_modifier
				years = 5
			}

			add_stress = medium_stress_gain

			add_opinion = {
				modifier = exposed_my_secret_opinion
				years = 5
				target = scope:secret_exposer
			}

			remove_character_modifier = regula_scouted_target_modifier
		}

		every_secret_knower = {
			limit = {
				NOT = { this = scope:secret_exposer }
			}

			send_interface_message = {
				type = secret_exposed_message
				title = regula_scouted_target_secret_exposed_title
				desc = regula_scouted_target_secret_exposed_desc
				left_icon = scope:secret_exposer
				right_icon = scope:secret_owner
			}
		}
	}
}

# Secret which indicates that the secret owner is secretly a practitioner of
# a regula faith.
#
# Largely a fork of vanilla crypto religion logic, but with added restritions
# around who would view this secret as shunned / criminal, and potential forced
# conversion on expose if the secret owner is charmed.
regula_crypto_religionist_secret = {
	category = religious

	is_valid = {
		secret_crypto_religionist_is_valid_trigger = {
			OWNER = scope:secret_owner
		}
	}

	is_shunned = { # Shunned for non-clergy by non-regula
		scope:target = {
			NOR = {
				is_regula_trigger = yes
				is_crypto_regula_trigger = yes
			}
		}
		secret_crypto_religionist_is_shunned_trigger = {
			OWNER = scope:secret_owner
		}
	}

	is_criminal = { # Criminal for clergy by non-regula
		scope:target = {
			NOR = {
				is_regula_trigger = yes
				is_crypto_regula_trigger = yes
			}
		}
		secret_crypto_religionist_is_criminal_trigger = {
			OWNER = scope:secret_owner
		}
	}

	on_expose = {
		save_scope_as = secret

		# Charmed characters will always convert. Non charmed characters
		# go through vanilla crypto religion expose path.
		scope:secret_owner = {
			if = {
				limit = {
					is_regula_devoted_trigger = yes
				}
				regula_force_convert_to_secret_faith_effect = yes
				secret_exposed_owner_opinion_effects_effect = yes
			}
			else = {
				trigger_event = false_conversion.8000
			}
		}

		every_secret_knower = {
			limit = {
				NOT = { this = scope:secret_exposer }
			}

			send_interface_message = {
				type = secret_exposed_message
				title = regula_crypto_religionist_secret_exposed_title
				desc = regula_crypto_religionist_secret_exposed_desc
				left_icon = scope:secret_exposer
				right_icon = scope:secret_owner
			}
		}
	}
}

# Secret which indicates that an individual is a member of a regula heresy
# conspiracy.
regula_heresy_conspirator_secret = {
	category = regula_heresy

	is_valid = {
		# Target must be the current magister.
		scope:secret_target = global_var:magister_character

		# Valid as long as the character is in could potentially join a
		# conspiracy.
		scope:secret_owner = {
			regula_heresy_potential_heresy_character_trigger = yes
		}

		scope:secret_target = {
			# Must target someone for whom heresy is ongoing.
			regula_heresy_ongoing_trigger = yes

			# Secret ceases to be valid once the heresy has gone public.
			NOT = {
				any_targeting_faction = {
					regula_faction_is_heresy_faction_trigger = yes
				}
			}
		}
	}

	is_shunned = { # Shunned by construction of this secret type.
		always = yes
	}

	is_criminal = { # Criminal by construction of this secret type.
		always = yes
	}

	on_expose = {
		scope:secret_owner = {
			add_stress = major_stress_gain

			add_opinion = {
				modifier = exposed_my_secret_opinion
				years = 5
				target = scope:secret_exposer
			}
		}

		scope:secret_target = {
			every_owned_story = {
				limit = {
					story_type = story_regula_heresy
				}
				regula_heresy_story_begin_public_opposition_effect = yes
			}
		}

		every_secret_knower = {
			limit = {
				NOT = { this = scope:secret_exposer }
			}

			send_interface_message = {
				type = secret_exposed_message
				title = regula_heresy_conspirator_secret_exposed_title
				desc = regula_heresy_conspirator_secret_exposed_desc
				left_icon = scope:secret_exposer
				right_icon = scope:secret_owner
			}
		}
	}
}
