﻿courting = {
	# Basic Setup
	skill = diplomacy
	desc = courting_desc_general
	success_desc = "COURT_SUCCESS_DESC"
	icon = icon_scheme_romance
	illustration = "gfx/interface/illustrations/event_scenes/corridor.dds"
	target_type = character
	is_secret = no
	is_basic = yes
	cooldown = { months = 2 }

	# Parameters
	speed_per_skill_point = -2.5
	spymaster_speed_per_skill_point = 0	
	base_progress_goal = 365
	base_maximum_success = 95
	minimum_success = 5
	
	# Core Triggers
	allow = {
		is_adult = yes
		trigger_if = {
			limit = {
				NOT = { government_has_flag = government_is_landless_adventurer }
			}
			is_travelling = no
		}
		scope:target = {
			is_adult = yes 
			trigger_if = {
				limit = {
					scope:owner = {
						NOT = { government_has_flag = government_is_landless_adventurer }
					}
				}
				is_travelling = no
			}
			this != scope:owner
		}
		#Game rules
		OR = {
			scope:target = { is_consort_of = scope:owner } #always allowed
			scope:target = { has_relation_lover = scope:owner } #always allowed
			AND = {
				scope:owner = { mgr_can_seduce = yes }
				#Player still gets penalty, but can seduce anyway
				OR = {
					scope:target = { mgr_can_seduce = yes }
					scope:owner = { is_ai = no }
				}
			}
		}				
		#Have I been blocked from targeting this character?
		custom_description = { #Permanent
			text = seduce_blocked
			object = scope:target

			NOT = {
				scope:target = {
					has_opinion_modifier = {
						modifier = seduce_permanent_blocker_opinion
						target = scope:owner
					}
				}
			}
		}

		#Time-limited blocker
		custom_description = {
			text = romance_cooldown
			object = scope:target

			NOT = {
				scope:target = {
					has_opinion_modifier = {
						modifier = seduce_regular_cooldown_opinion
						target = scope:owner
					}
				}
			}
		}

		#Have I already successfully romanced this person?
		custom_description = {
			text = romance_success_blocked
			object = scope:target

			NOT = {
				scope:target = {
					has_opinion_modifier = {
						modifier = romance_scheme_courtship_opinion
						target = scope:owner
					}
				}
			}
		}

		#They're not interested
		custom_description = {
			text = no_attraction_due_to_gender
			object = scope:target
			subject = scope:owner
			scope:target = { is_attracted_to_gender_of = scope:owner  }
		}

		#AI blockers
		trigger_if = {
			limit = { is_ai = yes }

			trigger_if = {
				limit = {
					OR = {
						any_spouse = { }
						any_relation = { type = lover }
					}
				}
				might_cheat_on_every_partner_trigger = yes
			}

			scope:target = {
				trigger_if = { #So players don't get spammed by AI courting
					limit = {
						is_ai = no
					}
					NOT = {
						any_targeting_scheme = {
							scheme_type = courting
						}
					}
				}
			}
		}
		trigger_if = {
			limit = { is_ai = yes }
			NOT = {
				scope:target = {
					 has_character_flag = courting_cooldown
				}
			}
		}
	}	
	valid = {
		is_incapable = no
		#HARD-BLOCK: Incest Target is too young
		NOT = { 
			custom_description = { 
				text = SCHEME_SEDUCE_UNWILLING_INCEST_TOO_YOUNG
				object = scope:target
				guaranteed_under_20_incest_rejection_trigger = {
					TARGET = scope:target
					SEDUCER = scope:owner
				}
			}
		}

		#We're already soulmates
		scope:owner = {
			NOT = {
				custom_description = {
					text = "romance_already_soulmate"
					object = scope:target
					has_relation_soulmate = scope:target
				}
			}
		}
		#You've been kicked out of bed
		custom_description = { 
			text = seduce_blocked
			object = scope:target
			NOT = {
				scope:owner = {
					has_character_modifier = rejected_from_marriage_bed_modifier
					is_spouse_of = scope:target 
				}
			}
		}

		# They can't consent
		NOT = { scope:target = { has_trait = intellect_bad_3 } } # Implies a mental development level akin to an average child
		NOT = { scope:target = { has_trait = incapable } } # Bed-ridden at best, but in many cases comatose or in a vegetative state
		
		# One of you is celibate
		NOT = { has_trait = celibate }
		scope:target = { NOT = { has_trait = celibate } }
		
		# One of you is imprisoned
		is_imprisoned = no
		scope:target = {
			is_imprisoned = no
		}

		# You're too far away
		scope:target = {
			OR = {
				exists = location
				in_diplomatic_range = scope:owner
			}
		}
	}

	odds_prediction = {
		add = base_odds_prediction_target_is_char_value
		add = odds_skill_contribution_diplomacy_value
		add = odds_romance_scheme_misc_value
		min = 0
	}

	# Base Chances
	base_success_chance = {
		base = 0
		scheme_type_skill_success_chance_modifier = { SKILL = DIPLOMACY }
		
		# Countermeasures.
		apply_opportunistic_scheme_success_chance_adjustments_modifier = yes

		# You got a wedding night memento
		modifier = {
			add = 20
			desc = "SCHEME_WNIGHT_COURT_MEMENTO"
			scope:owner = {
				exists = var:wnight_court_memento_var
				var:wnight_court_memento_var = scope:target
			}
		}

		modifier = {
			add = 10
			desc = hopeless_romantic_modifier
			scope:owner = { has_character_modifier = hopeless_romantic_modifier }
		}
		
		#Language
		modifier = {
			add = 5
			desc = YOU_SPEAK_THE_LANGUAGE
			scope:owner = { knows_language_of_culture = scope:target.culture }
		}
		#Game rules
		modifier = {
			desc = GAME_RULE_SEDUCTION_MORE_DIFFICULT
			OR = {
				has_game_rule = restricted_seduction
				has_game_rule = less_seduction
				has_game_rule = no_seduction
			}
			NOT = { scope:target = { is_consort_of = scope:owner } }
			NOT = { scope:target = { has_relation_lover = scope:owner } }
			scope:target = { mgr_can_seduce = no }
			add = -1000
		}
		modifier = {
			desc = GAME_RULE_SEDUCTION_EASIER
			has_game_rule = more_seduction
			add = 100
		}
		
		#Gallant
		modifier = {
			desc = "SCHEME_GALLANT_TRAIT"
			scope:owner = { has_trait = gallant }
			add = 30
		}

		#Beauty good
		modifier = {
			desc = "scheme_beauty_good_1"
			scope:owner = { has_trait = beauty_good_1 }
			add = 10
		}
		modifier = {
			desc = "scheme_beauty_good_2"
			scope:owner = { has_trait = beauty_good_2 }
			add = 15
		}
		modifier = {
			desc = "scheme_beauty_good_3"
			scope:owner = { has_trait = beauty_good_3 }
			add = 20
		}

		#Physique good
		modifier = {
			desc = "scheme_physique_good_1"
			scope:owner = { has_trait = physique_good_1 }
			add = 5
		}
		modifier = {
			desc = "scheme_physique_good_2"
			scope:owner = { has_trait = physique_good_2 }
			add = 10
		}
		modifier = {
			desc = "scheme_physique_good_3"
			scope:owner = { has_trait = physique_good_3 }
			add = 15
		}

		#Beauty bad
		modifier = {
			desc = "scheme_beauty_bad_1"
			scope:owner = { has_trait = beauty_bad_1 }
			add = -10
		}
		modifier = {
			desc = "scheme_beauty_bad_2"
			scope:owner = { has_trait = beauty_bad_2 }
			add = -15
		}
		modifier = {
			desc = "scheme_beauty_bad_3"
			scope:owner = { has_trait = beauty_bad_3 }
			add = -20
		}
		
		# You are a Courteous Knight
		modifier = {
			add = 50
			desc = "SCHEME_COURTEOUS_KNIGHT"
			scope:owner = {
				has_character_modifier = ep3_courteous_knight_modifier
			}
		}
		modifier = {
			desc = scheme_family_widow_seduce_romance
			scope:owner ?= {
				var:family_widow_forbidden_divorce ?= scope:target
			}
			add = 20
		}

		#TARGET

		#Does their spouse have a strong hook on them?
		modifier = {
			trigger = { scope:owner = { NOT = { is_consort_of = scope:target } } }
			scope:target = {
				exists = primary_spouse
				OR = {
					primary_spouse = { has_strong_hook = scope:target }
					has_trait = loyal
				}
			}
			add = -100
			desc = SCHEME_SEDUCE_SPOUSE_STRONG_HOOK_PENALTY
		}
		
		#Opinion of owner
		opinion_modifier = {
			who = scope:target
			opinion_target = scope:owner
			min = -50
			max = 50
			multiplier = 1.5
			step = 5
		}

		#Trait similitarity to owner
		compatibility_modifier = {
			who = scope:target
			compatibility_target = scope:owner
			min = -100
			max = 80
			multiplier = 3
		}

		#Rank tier difference (landed target/target whose liege doesn't care)
		modifier = { #3 or more higher rank
			trigger = { personal_scheme_should_not_evaluate_tier_differences_trigger = yes }
			add = 20
			desc = "HIGHER_RANK_THAN_SCHEME_TARGET"
			scope:target = {
				personal_scheme_success_compare_target_liege_tier_trigger = no
				NOT = {
					is_theocratic_lessee = yes
				}
			}
			scope:owner = {
				tier_difference = {
					target = scope:target
					value >= 3
				}
			}
		}
		modifier = { #2 higher rank
			trigger = { personal_scheme_should_not_evaluate_tier_differences_trigger = yes }
			add = 10
			desc = "HIGHER_RANK_THAN_SCHEME_TARGET"
			scope:target = {
				personal_scheme_success_compare_target_liege_tier_trigger = no
				NOT = {
					is_theocratic_lessee = yes
				}
			}
			scope:owner = {
				tier_difference = {
					target = scope:target
					value = 2
				}
			}
		}
		modifier = { #1 higher rank
			trigger = { personal_scheme_should_not_evaluate_tier_differences_trigger = yes }
			add = 5
			desc = "HIGHER_RANK_THAN_SCHEME_TARGET"
			scope:target = {
				personal_scheme_success_compare_target_liege_tier_trigger = no
				NOT = {
					is_theocratic_lessee = yes
				}
			}
			scope:owner = {
				tier_difference = {
					target = scope:target
					value = 1
				}
			}
		}
		modifier = { #1 lower rank
			trigger = { personal_scheme_should_not_evaluate_tier_differences_trigger = yes }
			add = -5
			desc = "LOWER_RANK_THAN_SCHEME_TARGET"
			scope:target = {
				personal_scheme_success_compare_target_liege_tier_trigger = no
			}
			scope:owner = {
				tier_difference = {
					target = scope:target
					value = -1
				}
			}
		}
		modifier = { #2 lower rank
			trigger = { personal_scheme_should_not_evaluate_tier_differences_trigger = yes }
			add = -10
			desc = "LOWER_RANK_THAN_SCHEME_TARGET"
			scope:target = {
				personal_scheme_success_compare_target_liege_tier_trigger = no
			}
			scope:owner = {
				tier_difference = {
					target = scope:target
					value = -2
				}
			}
		}
		modifier = { #3 or less lower rank
			trigger = { personal_scheme_should_not_evaluate_tier_differences_trigger = yes }
			add = -20
			desc = "LOWER_RANK_THAN_SCHEME_TARGET"
			scope:target = {
				personal_scheme_success_compare_target_liege_tier_trigger = no
			}
			scope:owner = {
				tier_difference = {
					target = scope:target
					value <= -3
				}
			}
		}

		#Rank tier difference (unlanded character)
		modifier = { #3 or more higher rank
			trigger = { personal_scheme_should_not_evaluate_tier_differences_trigger = yes }
			add = 50
			desc = "HIGHER_RANK_THAN_SCHEME_TARGET_LIEGE"
			scope:target = {
				personal_scheme_success_compare_target_liege_tier_trigger = yes
				NOT = {
					is_theocratic_lessee = yes
				}
			}
			scope:owner = {
				tier_difference = {
					target = scope:target.liege
					value >= 3
				}
			}
		}
		modifier = { #2 higher rank
			trigger = { personal_scheme_should_not_evaluate_tier_differences_trigger = yes }
			add = 25
			desc = "HIGHER_RANK_THAN_SCHEME_TARGET_LIEGE"
			scope:target = {
				personal_scheme_success_compare_target_liege_tier_trigger = yes
				NOT = {
					is_theocratic_lessee = yes
				}
			}
			scope:owner = {
				tier_difference = {
					target = scope:target.liege
					value = 2
				}
			}
		}
		modifier = { #1 higher rank
			trigger = { personal_scheme_should_not_evaluate_tier_differences_trigger = yes }
			add = 10
			desc = "HIGHER_RANK_THAN_SCHEME_TARGET_LIEGE"
			scope:target = {
				personal_scheme_success_compare_target_liege_tier_trigger = yes
				NOT = {
					is_theocratic_lessee = yes
				}
			}
			scope:owner = {
				tier_difference = {
					target = scope:target.liege
					value = 1
				}
			}
		}
		modifier = { #1 lower rank
			trigger = { personal_scheme_should_not_evaluate_tier_differences_trigger = yes }
			add = -10
			desc = "LOWER_RANK_THAN_SCHEME_TARGET_LIEGE"
			scope:target = {
				personal_scheme_success_compare_target_liege_tier_trigger = yes
			}
			scope:owner = {
				tier_difference = {
					target = scope:target.liege
					value = -1
				}
			}
		}
		modifier = { #2 lower rank
			trigger = { personal_scheme_should_not_evaluate_tier_differences_trigger = yes }
			add = -25
			desc = "LOWER_RANK_THAN_SCHEME_TARGET_LIEGE"
			scope:target = {
				personal_scheme_success_compare_target_liege_tier_trigger = yes
			}
			scope:owner = {
				tier_difference = {
					target = scope:target.liege
					value = -2
				}
			}
		}
		modifier = { #3 or less lower rank
			trigger = { personal_scheme_should_not_evaluate_tier_differences_trigger = yes }
			add = -50
			desc = "LOWER_RANK_THAN_SCHEME_TARGET_LIEGE"
			scope:target = {
				personal_scheme_success_compare_target_liege_tier_trigger = yes
			}
			scope:owner = {
				tier_difference = {
					target = scope:target.liege
					value <= -3
				}
			}
		}

		# Diarchs are better at schemes within their liege's realm
		diarch_scheming_within_realm_bonus_modifier = yes

		#Gubermint difference
		modifier = { #3 or more higher rank
			add = -50
			desc = "TRIBE_ROMANCING_OTHER_GOVERNMENTS"
			exists = scope:target.court_owner
			scope:target.court_owner = {
				NOT = { government_has_flag = government_is_tribal }
			}
			scope:owner = { government_has_flag = government_is_tribal }
		}

		#Religious Heads
		modifier = {
			add = -50
			desc = "SCHEME_VS_RELIGIOUS_HEAD"
			scope:target = {
				faith = scope:owner.faith
				faith = {
					religious_head ?= {
			 			this = scope:target
			 		}
				}
			}
		}

		#Taboo
		modifier = { #Incest is taboo (norms & consequences)
			add = -25
			desc = SCHEME_SEDUCE_TABOO_INCEST
			scope:target = {
				relation_with_character_is_incestuous_in_my_or_lieges_faith_trigger = { CHARACTER = scope:owner }
			}
			scope:owner = {
				# The Subtle Desire Perk nullifies this
				NOT = { has_perk = subtle_desire_perk }
				# being already a lover with the target nulifies it
				NOT = { has_relation_lover = scope:target }
			}
		}
		modifier = { #Character is not willing to engage in incest with scope:owner
			add = {
				if = {
					limit = { scope:target = { is_close_family_of = scope:owner } }
					value = -40
				}
				else_if = {
					limit = { scope:target = { is_extended_family_of = scope:owner } }
					value = -15
				}
				if = {
					limit = { scope:target = { is_deviant_trigger = yes } }
					add = 15
				}
			}
			desc = SCHEME_SEDUCE_UNWILLING_INCEST
			scope:target = {
				NOT = {
					is_consort_of = scope:owner
				}
				is_close_or_extended_family_of = scope:owner
				NOR = {
					accepts_incest_with_trigger = { CHARACTER = scope:owner } #100% fine with incest with owner
					scope:owner = { has_perk = subtle_desire_perk }  # The Subtle Desire Perk nullifies this
					guaranteed_under_20_incest_rejection_trigger = { # handled by hard block modifier
						TARGET = scope:target
						SEDUCER = scope:owner
					}
				}
			}
		}
		modifier = { #Sodomy
			add = -20
			desc = SCHEME_SEDUCE_TABOO_SODOMY
			scope:target = {
				relation_with_character_is_sodomy_in_my_or_lieges_faith_trigger = { CHARACTER = scope:owner }
				NOT = { freely_accepts_sodomy_with_trigger = { CHARACTER = scope:owner } }
			}
		}
		
		modifier = { # Tradition
			add = 40
			desc = SCHEME_TRAIT_POET
			scope:owner = {
				has_trait = lifestyle_poet
				culture = {
					has_cultural_parameter = poet_trait_romance_bonuses
				}
			}
		}

		# Courtship Perk
		modifier = {
			add = courtship_court_success_chance_bonus_value
			desc = SCHEME_COURTSHIP_PERK
			scope:owner = {
				has_perk = courtship_perk
			}
		}

		# Dynasty Kin Personal Scheme Success Chance on Dynasty Perk
		modifier = {
			add = kin_legacy_4_success_chance
			desc = KIN_LEGACY_DESC
			exists = scope:owner.dynasty
			scope:owner.dynasty = {
				has_dynasty_perk = kin_legacy_4
			}
			scope:target.dynasty = scope:owner.dynasty
		}

		# House Personal Scheme Success Chance on Cultural Parameter
		modifier = {
			add = cultural_house_personal_scheme_success_chance
			desc = KIN_PARAMETER_DESC
			exists = scope:owner.house
			exists = scope:target.house
			scope:owner.culture = {
				has_cultural_parameter = cultural_house_personal_scheme_success_chance
			}
			scope:target.house = scope:owner.house
		}

		# Spouse Scheme Success Chance on Cultural Parameter
		modifier = {
			add = 30
			desc = SPOUSE_PARAMETER_DESC
			scope:owner = {
				is_spouse_of = scope:target
			}
			scope:owner.culture = {
				has_cultural_parameter = romance_scheme_bonus_vs_spouse
			}
		}

		#Family Feud
		house_feud_sway_scheme_success_modifier = yes

		# Modifiers
		modifier = {
			scope:owner = { has_character_modifier = poet_for_diplo_schemes_modifier }
			desc = poet_for_diplo_schemes_modifier
			add = 15
		}
		
		# Personal Scheme Shared
		personal_scheme_base_success_chance_modifiers = yes
	}

	# On Actions
	on_start = {
		set_variable = {
			name = apply_countermeasures
			value = flag:opportunistic
		}
		scheme_owner = {
			trigger_event = court_ongoing.0501
		}
	}
	on_phase_completed = {
		# Grab our scopes.
		save_scope_as = scheme
		scheme_target_character = { save_scope_as = target }
		scheme_owner = { save_scope_as = owner }
		scope:scheme = {
			# Set up a block for the inappropriate cheating error?
			save_scope_value_as = {
				name = ignore_cheating_error_check
				value = yes
			}
			# Proceed to rolls.
			scheme_owner = {
				#DISCOVERY ROLL
				save_scope_value_as = {
					name = discovery_chance
					value = {
						value = 100
						subtract = scope:scheme.scheme_secrecy
					}
				}
				random = {
					chance = scope:discovery_chance
					save_scope_value_as = {
						name = scheme_discovered
						value = yes
					}
				}

				#SUCCESS ROLL
				random = {
					chance = scope:scheme.scheme_success_chance

					save_scope_value_as = {
						name = scheme_successful
						value = yes
					}
				}

				#CONTINUE WITH OUTCOME ON_ACTION FOR AI TARGETS
				if = {
					limit = { scope:target = { is_ai = yes } }

					trigger_event = {
						on_action = court_outcome
					}
				}
				#FOR PLAYER CHARACTER, SEND CHOICE EVENT
				else = {
					scope:target = {
						trigger_event = {
							id = court_outcome.0003
						}
					}
				}
			}
		}
	}
	on_monthly = {
		save_scope_as = scheme
		scheme_owner = { save_scope_as = owner }
		scheme_target_character = { save_scope_as = target }

		# Sending an ongoing event
		if = {
			limit = {
				scheme_owner = { is_available = yes }
				scheme_target_character = { is_available = yes }
				player_target_available_for_personal_scheme_ongoing_events_trigger = {
					OWNER = scope:owner
					TARGET = scope:target
				}
				OR = {
					#Milestone 1 event
					AND = {
						scope:scheme = {
							scheme_progress >= scheme_progress_33
						}
						NOT = { exists = var:court_milestone_event }
					}
					#Milestone 2 event
					AND = {
						scope:scheme = {
							scheme_progress >= scheme_progress_50
						}
						OR = {
							NOT = { exists = var:court_milestone_event }
							var:court_milestone_event < 2
						}
					}
					#Milestone 3 event
					AND = {
						scope:scheme = {
							scheme_progress >= scheme_progress_66
						}
						OR = {
							NOT = { exists = var:court_milestone_event }
							var:court_milestone_event < 3
						}
					}
				}
			}
			#Set a var so we can track which milestone you've had
			if = {
				limit = { NOT = { exists = var:court_milestone_event } }
				set_variable = {
					name = court_milestone_event
					value = 1
				}
			}
			else = {
				change_variable = {
					name = court_milestone_event
					add = 1
				}
			}
			#Trigger event
			scheme_owner = {
				trigger_event = { on_action = court_ongoing }
			}
		}
	}
	on_invalidated = {
		scheme_target_character = {
			save_scope_as = target
		}
		scheme_owner = {
			save_scope_as = owner
		}
		if = {
			limit = {
				scope:target = { is_alive = no }
			}
			scope:owner = {
				send_interface_toast = {
					title = court_scheme_invalidated_title
					left_icon = scope:target
					custom_description_no_bullet = {
						object = scope:target
						text = scheme_target_died
					}
				}
			}
		}
		if = {
			limit = {
				scope:target = { is_imprisoned = yes }
			}
			scope:target.imprisoner = {
				save_scope_as = other_imprisoner
			}
			scope:owner = {
				send_interface_toast = {
					title = court_scheme_invalidated_title
					left_icon = scope:target
					right_icon = scope:other_imprisoner
					custom_description_no_bullet = {
						subject = scope:other_imprisoner
						object = scope:target
						text = scheme_target_imprisoned_by_other
					}
				}
			}
		}
		
		if = {
			limit = {
				OR = {
					#We're already soulmates
					scope:owner = {
						has_relation_soulmate = scope:target
					}

					#You've been kicked out of bed
					scope:owner = {
						has_character_modifier = rejected_from_marriage_bed_modifier
						is_spouse_of = scope:target 
					}
						
					scope:owner = {  has_trait = celibate  }
					scope:target = {  has_trait = celibate }
					
					scope:owner = { is_imprisoned = yes }
					scope:target = { is_imprisoned = yes }

					scope:target = {
						NOR = {
							exists = location
							in_diplomatic_range = scope:owner
						}
					}
				}
			}
			scheme_owner = {
				send_interface_toast = {
					type = event_toast_effect_neutral
					title = courting
					left_icon = scope:target
					custom_tooltip = courting_invalid
				}
			}
		}
	}
}

murder = {
	# Basic Setup
	skill = intrigue
	desc = murder_desc_general
	success_desc = "MURDER_SUCCESS_DESC"
	discovery_desc = "MURDER_DISCOVERY_DESC"
	icon = icon_scheme_murder
	illustration = "gfx/interface/illustrations/event_scenes/corridor.dds"
	category = hostile
	target_type = character
	is_secret = yes
	maximum_breaches = 5
	cooldown = { years = 10 }

	# Parameters
	speed_per_skill_point = t2_spsp_owner_value
	speed_per_target_skill_point = t2_spsp_target_value
	base_progress_goal = t2_base_phase_length_value
	maximum_secrecy = 95
	base_maximum_success = t2_base_max_success_value
	phases_per_agent_charge = 1
	success_chance_growth_per_skill_point = t2_scgpsp_value
	
	# Core Triggers
	allow = {
		age >= 14
		is_imprisoned = no
		any_held_title = {
			tier >= tier_barony
		}
		mgr_can_murder = yes
	}
	valid = {
		is_incapable = no
		trigger_if = {
			limit = {
				is_parent_of = scope:target
				NOT = {
					has_trait_with_flag = can_murder_own_children
				}
			}
			NOT = { is_parent_of = scope:target }
		}
		custom_description = {
			object = scope:target
			text = "I_have_imprisoned_target"
			scope:target = {
				imprisoner != scope:owner
			}
		}
		custom_description = {
			object = scope:target
			text = i_have_been_caught_trying_to_murder_target
			scope:target = {
				NOT = {
					has_opinion_modifier = {
						target = prev
						modifier = murder_personal_grudge_opinion
					}
				}
			}
		}
		scope:target = {
			OR = {
				exists = location
				in_diplomatic_range = scope:owner
			}
		}
		# Special AI exceptions
		NOT = {
			scope:owner = {
				is_ai = yes
				has_opinion_modifier = {
					target = scope:target
					modifier = repentant_opinion
				}
			}
		}
		# Events
		custom_tooltip = {
			text = guilt_fever_tt
			NOT = { has_character_flag = guilt_fever_murder_cd }
		}
	}

	# Agents
	agent_leave_threshold = -25
	agent_join_chance = {
		base = 0
		
		ai_agent_join_chance_basic_suite_modifier = yes
		ai_agent_join_chance_hostile_grievous_modifier = yes
	}
	agent_groups_owner_perspective = { courtiers guests scripted_relations }
	agent_groups_target_character_perspective = { courtiers vassals }
	valid_agent = { is_valid_agent_standard_trigger = yes }

	odds_prediction = {
		add = hostile_scheme_base_odds_prediction_target_is_char_value
		add = odds_skill_contribution_intrigue_value
		add = agent_groups_owner_perspective_value
		add = agent_groups_target_character_perspective_value
		add = odds_variables_contribution_murder
		add = odds_murder_scheme_misc_value
		min = 0
	}

	# Base Chances
	base_success_chance = {
		base = 0
		scheme_type_skill_success_chance_modifier = { SKILL = INTRIGUE }
		
		hostile_scheme_base_chance_modifier = yes

		# Countermeasures.
		apply_calculated_scheme_success_chance_adjustments_modifier = yes
		
		# Your dark arts advisor is helping you out
		modifier = {
			add = 15
			desc = "ACHMACH_MURDER_BONUS"
			scope:owner = {
				has_variable = achmach_murder_help_var
				any_councillor = {
					has_variable = achmach_murder_help_councillor_var
				}
			}
		}
		
		# As Temüjin, you swore to murder Jamukha
		modifier = {
			add = 50
			desc = "TEMUJIN_JAMUKHA_MURDER_BONUS"
			scope:owner = {
				exists = var:temujin_jamukha_murder_var
				var:temujin_jamukha_murder_var = scope:target
			}
		}

		# Imaginary friend told you to kill them
		modifier = {
			add = 50
			desc = "IMAGINARY_FRIEND_MURDER_BONUS"
			scope:owner = {
				exists = var:imaginary_friend_murder_target
				var:imaginary_friend_murder_target = scope:target
			}
		}
		
		# They crowned you king/queen of fools
		modifier = {
			add = 20
			desc = "MURDER_FOOL_NEMESIS_BONUS"
			scope:owner = {
				exists = var:festival_nemesis_fool_var
				var:festival_nemesis_fool_var = scope:target
			}
		}
		
		# You found their escape tunnel
		modifier = {
			add = 100
			desc = "SCHEME_DISCOVERED_ESCAPE_TUNNEL"
			scope:owner = {
				exists = var:discovered_escape_tunnel_of
				var:discovered_escape_tunnel_of = scope:target
			}
		}
		
		# You heard them explain their plan to your camp followers
		modifier = {
			add = 50
			desc = "SCHEME_ET_TU_BRUTE"
			scope:owner = {
				exists = var:et_tu_brute_var
				var:et_tu_brute_var = scope:target
			}
		}
		
		# You know where their chamber is
		modifier = {
			add = 50
			desc = "SCHEME_WNIGHT_VICTIM_CHAMBER"
			scope:owner = {
				exists = var:wnight_chandelier_murder_var
				var:wnight_chandelier_murder_var = scope:target
			}
		}

		modifier = {
			add = 10
			scope:owner = { has_trait = lifestyle_herbalist }
			desc = MURDER_HERBALIST_BONUS
		}

		modifier = {
			add = -50
			scope:target = {				
				has_opinion_modifier = {
					target = scope:owner
					modifier = attempted_murder_me_crime
				}
			}
			desc = HAS_ATTEMPTED_TO_MURDER_TARGET_BEFORE
		}
		
		# Spiritual Head of Faith
		modifier = {
			add = -50
			desc = "SCHEME_VS_SPIRITUAL_HOF"
			scope:target = {
				faith = scope:owner.faith
				faith = {
					has_doctrine = doctrine_spiritual_head
				}
				faith = {
					religious_head ?= {
			 			this = scope:target
			 		}
				}
			}
		}

		# Sponsored Inspiration
		modifier = {
			add = -25
			desc = target_has_sponsored_inspiration
			scope:target = {
				inspiration ?= { exists = inspiration_sponsor }
			}
		}

		# Family Feud
		house_feud_hostile_scheme_success_modifier = yes
		
		# At War
		first_valid = {
			modifier = {
				add = -50
				desc = "SCHEME_AT_WAR"
				scope:target = {
					is_at_war_with = scope:owner
				}
			}
			modifier = {
				add = -25
				scope:target = {
					is_playable_character = no
					liege ?= {
						is_at_war_with = scope:owner
					}
				}
				desc = "SCHEME_AT_WAR_WITH_LIEGE"
			}
			modifier = {
				add = -25
				scope:target = {
					is_playable_character = yes
					liege ?= {
						is_at_war_with = scope:owner
					}
				}
				desc = "SCHEME_AT_WAR_WITH_LIEGE"
			}
		}

		# Diarchs are better at schemes within their liege's realm
		diarch_scheming_within_realm_bonus_modifier = yes

		# Tailor
		
		modifier = {
			add = 10
			scope:owner = {
				has_character_modifier = tournament_tailor_mixup_scheme_modifier
				exists = var:tailor_mixup_house
				exists = scope:target.house
				var:tailor_mixup_house = scope:target.house
			}
			desc = "tournament_tailor_mixup_scheme_modifier_value"
		}

		modifier = {
			add = 10
			desc = feast_learnt_habits_modifier.tt
			scope:owner = {
				any_scheme = {
					type = murder
					scheme_target_character = scope:target
					has_scheme_modifier = feast_learnt_habits_modifier
				}
			}
		}

		# Caliph protection
		modifier = {
			add = -200
			scope:target = {
				has_character_modifier = fp3_struggle_caliph_super_suspicious_modifier
			}
			desc = has_fp3_struggle_caliph_super_suspicious_modifier

		}

		# Events
		modifier = {
			add = -50
			scope:target = {
				has_character_modifier = cant_poison_soup_modifier
			}
			desc = cant_poison_soup_modifier_value
		}

		modifier = {
			scope:target = {
				exists = court_owner
				court_owner = {
					has_character_flag = keeper_of_the_harem_maintaining_decorum
				}
				is_consort_of = court_owner
				NOT = {
					is_consort_of = scope:owner
				}
			}
			add = -50
		}
	}
	base_secrecy = {
		add = secrecy_base_value
		add = countermeasure_apply_secrecy_maluses_value
		add = secrecy_charting_realm_increase_value
	}

	# On Actions
	on_start = {
		set_variable = {
			name = apply_countermeasures
			value = flag:calculating
		}
		add_scheme_starting_opportunities_intrigue_effect = yes
		# Fallback agents — a balanced config if you start the scheme from script.
		if = {
			limit = {
				scheme_owner = {
					NOT = { has_variable = agents_added }
				}
			}
			add_agent_slot = agent_assassin
			add_agent_slot = agent_assassin
			add_agent_slot = agent_thug
			add_agent_slot = agent_infiltrator
			add_agent_slot = agent_alibi
		}
		else = {
			scheme_owner = { remove_variable = agents_added }
		}
		scheme_owner = {
			if = {
				limit = {
					domicile ?= { has_domicile_parameter = camp_unlocks_poisoner_scheme_agents }
				}
				root = { add_agent_slot = agent_poisoner }
			}
		}
	}
	on_phase_completed = {
		suppress_scheme_follow_up_event_till_input_given_effect = yes
		murder_scheme_prep_effect = yes
		cap_schemes_and_fire_reminders_effect = yes
	}
	on_hud_click  = { murder_scheme_prep_effect = yes }
	on_semiyearly = {
		if = {
			limit = {
				scheme_owner = { is_ai = yes }
			}
			murder_scheme_prep_effect = yes
			purge_ai_scheme_slots_effect = yes
		}
	}
	on_monthly = {
		hostile_scheme_monthly_discovery_chance_effect = yes
		if = {
			limit = {
				NOT = { exists = scope:discovery_event_happening }
			}			
			scheme_owner = {
				trigger_event = {
					on_action = murder_ongoing
				}
			}
		}
	}
	on_invalidated = {
		scheme_target_character = {
			save_scope_as = target
		}
		scheme_owner = {
			save_scope_as = owner
		}

		if = { # If the target is part of the imaginary friend story cycle, fire this invalidation event, otherwise fire one of the normal ones
			limit = {
				scope:target = {
					is_alive = no
					killer != scope:owner
				}
				scope:owner = { var:imaginary_friend_murder_target ?= scope:target }
			}
			scope:owner = {
				trigger_event = bp2_yearly.2023
			}
		}
		else = {
			if = { #Did the character die in another way?
				limit = {
					scope:target = {
						is_alive = no
						killer != scope:owner
					}
				}
				scope:owner = {
					trigger_event = murder_outcome.2000
				}
			}

			if = { #Did the character move outside of diplomatic range
				limit = {
					scope:target = {
						NOT = { in_diplomatic_range = scope:owner }
					}
				}
				scope:owner = {
					trigger_event = murder_outcome.2500
				}
			}
		}
	}
}

seduce = {
	# Basic Setup
	skill = intrigue
	desc = seduce_desc_general
	success_desc = "SEDUCE_SUCCESS_DESC"
	icon = icon_scheme_seduce
	illustration = "gfx/interface/illustrations/event_scenes/corridor.dds"
	target_type = character
	is_secret = yes
	maximum_breaches = 5
	is_basic = yes

	# Parameters
	speed_per_skill_point = -2.5
	spymaster_speed_per_skill_point = 0	
	base_progress_goal = 365
	base_maximum_success = 95
	minimum_success = 5
	
	# Core Triggers
	allow = {
		is_adult = yes
		trigger_if = {
			limit = {
				NOT = { government_has_flag = government_is_landless_adventurer }
			}
			is_travelling = no
		}
		scope:target = {
			is_adult = yes
			trigger_if = {
				limit = {
					scope:owner = {
						NOT = { government_has_flag = government_is_landless_adventurer }
					}
				}
				is_travelling = no
			}
		}

		# Mutual attraction is a hard limit because this scheme implies real romantic feelings and we don't model romantic attraction separately from sexual attraction
		OR = {
			is_ai = no	#Players may override their character's sexuality for the purposes of cynical seductions.
			scope:owner = { is_attracted_to_gender_of = scope:target }	
		}
		#Game rules
		OR = {
			scope:target = { is_consort_of = scope:owner } #always allowed
			AND = {
				scope:owner = { mgr_can_seduce = yes }
				#Player still gets penalty, but can seduce anyway
				OR = {
					scope:target = { mgr_can_seduce = yes }
					scope:owner = { is_ai = no }
				}
			}
		}
		#Have I been blocked from targeting this character?
		custom_description = { #Permanent
			text = seduce_blocked
			object = scope:target

			NOT = {
				scope:target = {
					has_opinion_modifier = {
						modifier = seduce_permanent_blocker_opinion
						target = scope:owner
					}
				}
			}
		}

		# Time-limited blocker
		custom_description = {
			text = seduce_cooldown
			object = scope:target

			NOT = {
				scope:target = {
					has_opinion_modifier = {
						modifier = seduce_regular_cooldown_opinion
						target = scope:owner
					}
				}
			}
		}

		# 10 year general target blocker
		custom_description = {
			text = seduce_general_10_year_cooldown
			subject = scope:target

			NOT = {
				scope:target = {
					 has_character_flag = block_seduce_attempts
				}
			}
		}

		# They're not interested
		custom_description = {
			text = no_attraction_due_to_gender
			object = scope:target
			subject = scope:owner
			scope:target = { is_attracted_to_gender_of = scope:owner  }
		}

		is_below_ai_lover_soft_cap_trigger = yes
		trigger_if = {
			limit = { is_ai = yes }
			scope:target = {
				is_below_ai_lover_soft_cap_trigger = yes
				trigger_if = { # Block AI from seducing lowborn nobodies in the players court
					limit = {
						liege ?= { is_ai = no }
						NOR = {
							is_courtier_of = scope:owner
							is_foreign_court_or_pool_guest_of = scope:owner
						}
					}
					OR = {
						is_lowborn = no
						is_playable_character = yes
					}
				}
				trigger_if = { #So players don't get spammed by AI seduction
					limit = {
						is_ai = no
					}
					NOT = {
						any_targeting_scheme = {
							scheme_type = seduce
						}
					}
				}
			}
		}

		NOT = { scope:owner = { has_character_flag = is_party_baron } } # The Party Baron wants friends, not lovers!
	}
	valid = {
		is_incapable = no
		#seducing done by or to minors is not allowed.
		scope:owner = {
			is_adult = yes
		}
		scope:target = {
			is_adult = yes
		}
		#HARD-BLOCK: Incest Target is too young
		NOT = { 
			custom_description = { 
				text = SCHEME_SEDUCE_UNWILLING_INCEST_TOO_YOUNG
				object = scope:target
				guaranteed_under_20_incest_rejection_trigger = {
					TARGET = scope:target
					SEDUCER = scope:owner
				}
			}
		}
		#MGR
		scope:owner = { mgr_can_seduce = yes }
		OR = {
			scope:target = { mgr_can_seduce = yes }
			scope:owner = { is_ai = no }
		}
		#we're already lovers
		NOT = {
			custom_description = {
				text = "seduce_already_lover"
				object = scope:target
				has_relation_lover = scope:target
				NOT = { has_relation_soulmate = scope:target }
			}
		}

		#We're already soulmates
		scope:owner = {
			NOT = {
				custom_description = {
					text = "romance_already_soulmate"
					object = scope:target
					has_relation_soulmate = scope:target
				}
			}
		}

		#You've been kicked out of bed
		custom_description = { 
			text = seduce_blocked
			object = scope:target
			NOT = {
				scope:owner = {
					has_character_modifier = rejected_from_marriage_bed_modifier
					is_spouse_of = scope:target 
				}
			}
		}

		# They can't consent
		NOT = { scope:target = { has_trait = intellect_bad_3 } } # Implies a mental development level akin to an average child
		NOT = { scope:target = { has_trait = incapable } } # Bed-ridden at best, but in many cases comatose or in a vegetative state

		# One of you is celibate
		NOT = { has_trait = celibate }
		scope:target = { NOT = { has_trait = celibate } }
		
		# One of you is imprisoned
		is_imprisoned = no
		scope:target = {
			is_imprisoned = no
		}

		# You're too far away
		scope:target = {
			OR = {
				exists = location
				in_diplomatic_range = scope:owner
			}
		}
	}
	use_secrecy = {
		use_seduce_secrecy_trigger = {
			TARGET = scope:target
			OWNER = scope:owner
		}
	}

	odds_prediction = {
		add = base_odds_prediction_target_is_char_value
		add = odds_skill_contribution_intrigue_value
		add = odds_seduce_scheme_misc_value
		add = {
			value = 0
			desc = "possessed_by_lust_demon_modifier"
			if = {
				limit = {
					scope:owner = {
						has_character_modifier = possessed_by_lust_demon_modifier
					}
					scope:target = { ai_zeal > medium_positive_ai_value }
				}
				add = scope:target.ai_zeal
			}
		}
		min = 0
	}

	# Base Chances
	base_success_chance = {
		base = 0
		scheme_type_skill_success_chance_modifier = { SKILL = INTRIGUE }
		
		# Countermeasures.
		apply_opportunistic_scheme_success_chance_adjustments_modifier = yes
		
		#GAME RULES#
		modifier = {
			desc = GAME_RULE_SEDUCTION_MORE_DIFFICULT
			OR = {
				has_game_rule = restricted_seduction
				has_game_rule = less_seduction
				has_game_rule = no_seduction
			}
			NOT = { scope:target = { is_consort_of = scope:owner } }
			scope:target = { mgr_can_seduce = no }
			add = -1000
		}
		modifier = {
			desc = GAME_RULE_SEDUCTION_EASIER
			has_game_rule = more_seduction
			add = 100
		}
		# You got a wedding night memento
		modifier = {
			add = 20
			desc = "SCHEME_WNIGHT_SEDUCE_MEMENTO"
			scope:owner = {
				exists = var:wnight_seduce_memento_var
				var:wnight_seduce_memento_var = scope:target
			}
		}

		#Lust demon rep makes people wanna help you out... sexually
		modifier = {
			add = scope:target.ai_zeal
			desc = "SCHEME_LUST_DEMON_MODIFIER"
			scope:owner = {
				has_character_modifier = possessed_by_lust_demon_modifier
			}
			scope:target = {
				ai_zeal > medium_positive_ai_value
			}
		}
		
		#Language
		modifier = {
			add = 5
			desc = YOU_SPEAK_THE_LANGUAGE
			scope:owner = { knows_language_of_culture = scope:target.culture }
		}
		
		modifier = { # Home Advantage perk bonus against own Courtiers and Guests
			desc = SEDUCE_COURTIER_GUEST_PERK_BONUS
			scope:owner = { has_perk = home_advantage_perk }
			scope:target = {
				OR = {
					is_courtier_of = scope:owner
					is_pool_guest_of = scope:owner
					is_foreign_court_guest_of = scope:owner
				}
			}
			add = home_advantage_perk_bonus
		}
		modifier = { # Smooth Operator perk bonus
			desc = SEDUCE_PERK_BONUS
			scope:owner = { has_perk = smooth_operator_perk }
			always = yes
			add = smooth_operator_perk_bonus
		}
		
		modifier = { # Legacy bonus
			desc = LEGACY_PERK_BONUS
			scope:owner = {
				dynasty ?= {
					has_dynasty_perk = fp1_adventure_legacy_2
				}
			}
			always = yes
			add = fp1_adventure_legacy_2_success_chance_seduction
		}

		modifier = {
			desc = "SCHEME_SCHEMER_TRAIT"
			scope:owner = { has_trait = seducer }
			add = 25
		}

		#Beauty good
		modifier = {
			desc = "scheme_beauty_good_1"
			scope:owner = { has_trait = beauty_good_1 }
			add = 10
		}
		modifier = {
			desc = "scheme_beauty_good_2"
			scope:owner = { has_trait = beauty_good_2 }
			add = 15
		}
		modifier = {
			desc = "scheme_beauty_good_3"
			scope:owner = { has_trait = beauty_good_3 }
			add = 20
		}

		#Physique good
		modifier = {
			desc = "scheme_physique_good_1"
			scope:owner = { has_trait = physique_good_1 }
			add = 5
		}
		modifier = {
			desc = "scheme_physique_good_2"
			scope:owner = { has_trait = physique_good_2 }
			add = 10
		}
		modifier = {
			desc = "scheme_physique_good_3"
			scope:owner = { has_trait = physique_good_3 }
			add = 15
		}

		#Beauty bad
		modifier = {
			desc = "scheme_beauty_bad_1"
			scope:owner = { has_trait = beauty_bad_1 }
			add = -10
		}
		modifier = {
			desc = "scheme_beauty_bad_2"
			scope:owner = { has_trait = beauty_bad_2 }
			add = -15
		}
		modifier = {
			desc = "scheme_beauty_bad_3"
			scope:owner = { has_trait = beauty_bad_3 }
			add = -20
		}

		#Venereal diseases
		modifier = {
			desc = "scheme_great_pox"
			scope:owner = { has_trait = great_pox }
			add = -50
		}
		modifier = {
			desc = "scheme_lovers_pox"
			scope:owner = { has_trait = lovers_pox }
			add = -25
		}
		modifier = {
			desc = "scheme_early_great_pox"
			scope:owner = { has_trait = early_great_pox }
			add = -25
		}

		#Sexuality
		modifier = {
			desc = SCHEME_SEDUCE_WRONG_GENDER
			scope:owner = {
				NOR = {
					is_attracted_to_gender_of = scope:target
					has_perk = unshackled_lust_perk # Removed by the Unshackled Lust Perk
				}
			}
			add = -25
		}

		#Events
		modifier = {
			desc = scheme_promoter_of_courtly_love
			scope:owner.liege ?= {
				has_character_modifier = promoter_of_courtly_love_modifier
			}
			scope:owner.location = scope:owner.liege.location
			add = 20
		}
		modifier = {
			desc = scheme_detractor_of_courtly_love
			scope:owner.liege ?= {
				has_character_modifier = detractor_of_courtly_love_modifier
			}
			scope:owner.location = scope:owner.liege.location
			add = -20
		}
		modifier = {
			desc = scheme_family_widow_seduce_romance
			scope:owner ?= {
				var:family_widow_forbidden_divorce ?= scope:target
			}
			add = 20
		}


		#TARGET#

		#Lustful/hedonist
		modifier = {
			desc = "SCHEME_REVELER"
			scope:target = { has_trait = lifestyle_reveler }
			add = 5
		}
		modifier = {
			desc = "SCHEME_LUSTFUL_TRAIT"
			scope:target = { has_trait = lustful }
			add = 10
		}

		#Chaste/shy
		modifier = {
			desc = "SCHEME_CHASTE_TRAIT"
			scope:target = { has_trait = chaste }
			add = -25
		}
		modifier = {
			desc = "SCHEME_SHY_TRAIT"
			scope:target = { has_trait = shy }
			add = -10
		}

		#Opinion of owner
		opinion_modifier = {
			who = scope:target
			opinion_target = scope:owner
			min = -50
			max = 50
			multiplier = 1.5
			step = 5
		}

		#Target is owner's spouse
		modifier = { #
			trigger = { scope:owner = { is_consort_of = scope:target } }
			scope:target = {
				NOT = { has_relation_rival = scope:owner }
			}
			add = 20
			desc = "SCHEME_SEDUCE_SPOUSE_BONUS"
		}

		# Too honorable for adultery
		modifier = {
			trigger = {
				scope:target = {			
					is_married = yes
					NOT = { is_consort_of = scope:owner }
					ai_honor >= high_positive_ai_value
					trait_is_shunned_or_criminal_in_faith_trigger = { TRAIT = adulterer FAITH = scope:target.faith GENDER_CHARACTER = scope:target }
				}
			}
			add = -50
			desc = "SCHEME_SEDUCE_UNWILLING_TO_COMMIT_ADULTERY"
		}

		modifier = {
			trigger = {
				scope:target = {
					is_married = yes
					NOT = { is_consort_of = scope:owner }
					primary_spouse ?= { save_temporary_scope_as = target_spouse }
					NOT = { might_cheat_on_partner_trigger = { PARTNER = scope:target_spouse }}
				}
			}
			# Branching logic for opinion checks, to save performance
			add = {
				value = 0
				scope:target = {
					if = { # Hard block for AI seducers, they don't need the granularity and opinion checks are expensive performance-wise. 
						limit = { scope:owner = { is_ai = yes }}
						add = -1000
					}
					else_if = { # Players get scaling penalties depending on how high their target's opinion is of their primary spouse.
						limit = {
							has_relation_soulmate = scope:target_spouse
						}
						add = -500
					}
					else_if = {
						limit = {
							opinion = {
								target = scope:target_spouse
								value >= high_positive_opinion
							}
						}
						if = {
							limit = {
								opinion = {
									target = scope:target_spouse
									value < very_high_positive_opinion
								}
							}
							# Opinion between 80 and 100
							add = -100
						}
						else = {
							# Opinion between 60 and 80
							add = -75
						}
					}
					else = {
						if = {
							limit = {
								opinion = {
									target = scope:target_spouse
									value >= medium_positive_opinion
								}
							}
							# Opinion between 40 and 60
							add = -50
						}
						else = {
							# Opinion between 0 and 40 (technically -100 and 40 but at below 0 we shouldn't be in this trigger block at all since 'might_cheat_on_partner_trigger' will have passed).
							add = -25
						}
					}
				}
			}
			desc = "SCHEME_SEDUCE_SPOUSE_OPINION_PENALTY"
		}

		# Doesn't like primary spouse.
		modifier = { #low_negative_opinion- of spouse
			trigger = { scope:owner = { NOT = { is_consort_of = scope:target } } }
			scope:target = {
				is_married = yes
				primary_spouse ?= { save_temporary_scope_as = target_spouse }
				opinion = {
					target = scope:target_spouse
					value < low_negative_opinion
				}
			}
			add = {
				value = 10
				if = {
					limit = {
						scope:target = {
							opinion = {
								target = scope:target_spouse
								value <= high_negative_opinion
							}
						}
					}
					add = 20
				}
				else_if = {
					limit = {
						scope:target = {
							opinion = {
								target = scope:target_spouse
								value <= medium_negative_opinion
							}
						}
					}
					add = 10
				}
			}
			desc = "SCHEME_SEDUCE_SPOUSE_OPINION_BONUS"
		}

		#Does their spouse have a strong hook on them?
		modifier = {
			trigger = { scope:owner = { NOT = { is_consort_of = scope:target } } }
			scope:target = {
				exists = primary_spouse
				OR = {
					primary_spouse = { has_strong_hook = scope:target }
					has_trait = loyal
				}
			}
			add = -100
			desc = SCHEME_SEDUCE_SPOUSE_STRONG_HOOK_PENALTY
		}

		#Trait similarity to owner
		compatibility_modifier = {
			who = scope:target
			compatibility_target = scope:owner
			min = -30
			max = 30
			multiplier = 2
		}

		#Rank tier difference (landed target/target whose liege doesn't care)
		modifier = { #3 or more higher rank
			trigger = { personal_scheme_should_not_evaluate_tier_differences_trigger = yes }
			add = 40
			desc = "HIGHER_RANK_THAN_SCHEME_TARGET"
			scope:target = {
				personal_scheme_success_compare_target_liege_tier_trigger = no
				NOT = {
					is_theocratic_lessee = yes
				}
			}
			scope:owner = {
				tier_difference = {
					target = scope:target
					value >= 3
				}
			}
		}
		modifier = { #2 higher rank
			trigger = { personal_scheme_should_not_evaluate_tier_differences_trigger = yes }
			add = 20
			desc = "HIGHER_RANK_THAN_SCHEME_TARGET"
			scope:target = {
				personal_scheme_success_compare_target_liege_tier_trigger = no
				NOT = {
					is_theocratic_lessee = yes
				}
			}
			scope:owner = {
				tier_difference = {
					target = scope:target
					value = 2
				}
			}
		}
		modifier = { #1 higher rank
			trigger = { personal_scheme_should_not_evaluate_tier_differences_trigger = yes }
			add = 10
			desc = "HIGHER_RANK_THAN_SCHEME_TARGET"
			scope:target = {
				personal_scheme_success_compare_target_liege_tier_trigger = no
				NOT = {
					is_theocratic_lessee = yes
				}
			}
			scope:owner = {
				tier_difference = {
					target = scope:target
					value = 1
				}
			}
		}
		modifier = { #1 lower rank
			trigger = {
				scope:owner = {
					NOT = { is_consort_of = scope:target } # Your spouse doesn't care if you're a different rank than them.
					NOT = { has_perk = subtle_desire_perk }
				}
			}
			add = -15
			desc = "LOWER_RANK_THAN_SCHEME_TARGET"
			scope:target = {
				personal_scheme_success_compare_target_liege_tier_trigger = no
			}
			scope:owner = {
				tier_difference = {
					target = scope:target
					value = -1
				}
			}
		}
		modifier = { #2 lower rank
			trigger = {
				scope:owner = {
					NOT = { is_consort_of = scope:target } # Your spouse doesn't care if you're a different rank than them.
					NOT = { has_perk = subtle_desire_perk }
				}
			}
			add = -30
			desc = "LOWER_RANK_THAN_SCHEME_TARGET"
			scope:target = {
				personal_scheme_success_compare_target_liege_tier_trigger = no
			}
			scope:owner = {
				tier_difference = {
					target = scope:target
					value = -2
				}
			}
		}
		modifier = { #3 or less lower rank
			trigger = {
				scope:owner = {
					NOT = { is_consort_of = scope:target } # Your spouse doesn't care if you're a different rank than them.
					NOT = { has_perk = subtle_desire_perk }
				}
			}
			add = -60
			desc = "LOWER_RANK_THAN_SCHEME_TARGET"
			scope:target = {
				personal_scheme_success_compare_target_liege_tier_trigger = no
			}
			scope:owner = {
				tier_difference = {
					target = scope:target
					value <= -3
				}
			}
		}

		#Rank tier difference (unlanded character)
		modifier = { #3 or more higher rank
			trigger = { personal_scheme_should_not_evaluate_tier_differences_trigger = yes }
			add = 50
			desc = "HIGHER_RANK_THAN_SCHEME_TARGET_LIEGE"
			scope:target = {
				personal_scheme_success_compare_target_liege_tier_trigger = yes
				NOT = {
					is_theocratic_lessee = yes
				}
			}
			scope:owner = {
				tier_difference = {
					target = scope:target.liege
					value >= 3
				}
			}
		}
		modifier = { #2 higher rank
			trigger = { personal_scheme_should_not_evaluate_tier_differences_trigger = yes }
			add = 25
			desc = "HIGHER_RANK_THAN_SCHEME_TARGET_LIEGE"
			scope:target = {
				personal_scheme_success_compare_target_liege_tier_trigger = yes
				NOT = {
					is_theocratic_lessee = yes
				}
			}
			scope:owner = {
				tier_difference = {
					target = scope:target.liege
					value = 2
				}
			}
		}
		modifier = { #1 higher rank
			trigger = { personal_scheme_should_not_evaluate_tier_differences_trigger = yes }
			add = 10
			desc = "HIGHER_RANK_THAN_SCHEME_TARGET_LIEGE"
			scope:target = {
				personal_scheme_success_compare_target_liege_tier_trigger = yes
				NOT = {
					is_theocratic_lessee = yes
				}
			}
			scope:owner = {
				tier_difference = {
					target = scope:target.liege
					value = 1
				}
			}
		}
		modifier = { #1 lower rank
			trigger = { 
				scope:owner = {
					personal_scheme_should_not_evaluate_tier_differences_trigger = yes
					NOT = { has_perk = subtle_desire_perk }
				}
			}
			add = -15
			desc = "LOWER_RANK_THAN_SCHEME_TARGET_LIEGE"
			scope:target = {
				personal_scheme_success_compare_target_liege_tier_trigger = yes
			}
			scope:owner = {
				tier_difference = {
					target = scope:target.liege
					value = -1
				}
			}
		}
		modifier = { #2 lower rank
			trigger = { 
				scope:owner = {
					personal_scheme_should_not_evaluate_tier_differences_trigger = yes
					NOT = { has_perk = subtle_desire_perk }
				}
			}
			add = -30
			desc = "LOWER_RANK_THAN_SCHEME_TARGET_LIEGE"
			scope:target = {
				personal_scheme_success_compare_target_liege_tier_trigger = yes
			}
			scope:owner = {
				tier_difference = {
					target = scope:target.liege
					value = -2
				}
			}
		}
		modifier = { #3 or less lower rank
			trigger = { 
				scope:owner = {
					personal_scheme_should_not_evaluate_tier_differences_trigger = yes
					NOT = { has_perk = subtle_desire_perk }
				}
			}
			add = -60
			desc = "LOWER_RANK_THAN_SCHEME_TARGET_LIEGE"
			scope:target = {
				personal_scheme_success_compare_target_liege_tier_trigger = yes
			}
			scope:owner = {
				tier_difference = {
					target = scope:target.liege
					value <= -3
				}
			}
		}

		#Extra rank bonus/penalty if target is arrogant/ambitious
		modifier = {
			trigger = { scope:owner = { NOT = { is_consort_of = scope:target } } } # No 'social climbing' if you're already their spouse!
			desc = SCHEME_SOCIAL_CLIMBER_RANK_BONUS
			add = 10
			scope:target = {
				OR = {
					has_trait = arrogant
					has_trait = ambitious
					has_trait = greedy
				}
				NOT = {
					is_theocratic_lessee = yes
				}
			}
			OR = {
				AND = {
					scope:target = { personal_scheme_success_compare_target_liege_tier_trigger = yes }
					scope:owner.highest_held_title_tier > scope:target.liege.highest_held_title_tier
				}
				AND = {
					scope:target = { personal_scheme_success_compare_target_liege_tier_trigger = no }
					scope:owner.highest_held_title_tier > scope:target.highest_held_title_tier
				}
			}
		}
		modifier = {
			trigger = { scope:owner = { NOT = { is_consort_of = scope:target } } } # No 'social climbing' if you're already their spouse!
			desc = SCHEME_SOCIAL_CLIMBER_RANK_PENALTY
			add = -10
			scope:target = {
				OR = {
					has_trait = arrogant
					has_trait = ambitious
					has_trait = greedy
				}
			}
			OR = {
				AND = {
					scope:target = { personal_scheme_success_compare_target_liege_tier_trigger = yes }
					scope:owner.highest_held_title_tier < scope:target.liege.highest_held_title_tier
				}
				AND = {
					scope:target = { personal_scheme_success_compare_target_liege_tier_trigger = no }
					scope:owner.highest_held_title_tier < scope:target.highest_held_title_tier
				}
			}
		}

		# Diarchs are better at schemes within their liege's realm
		diarch_scheming_within_realm_bonus_modifier = yes

		#Religious Heads
		modifier = {
			add = -50
			desc = "SCHEME_VS_RELIGIOUS_HEAD"
			scope:target = {
				faith = scope:owner.faith
				faith = {
					religious_head ?= {
						this = scope:target
					}
				}
			}
		}

		#Taboo
		modifier = { #Incest is taboo (norms & consequences)
			add = -25
			desc = SCHEME_SEDUCE_TABOO_INCEST
			scope:target = {
				relation_with_character_is_incestuous_in_my_or_lieges_faith_trigger = { CHARACTER = scope:owner }
			}
			scope:owner = { # The Subtle Desire Perk nullifies this
				NOT = { has_perk = subtle_desire_perk }
			}
		}
		modifier = { #Character is not willing to engage in incest with scope:owner
			add = {
				if = {
					limit = { scope:target = { is_close_family_of = scope:owner } }
					value = -40
				}
				else_if = {
					limit = { scope:target = { is_extended_family_of = scope:owner } }
					value = -15
				}
				if = {
					limit = { scope:target = { is_deviant_trigger = yes } }
					add = 15
				}
			}
			desc = SCHEME_SEDUCE_UNWILLING_INCEST
			scope:target = {
				NOT = { is_consort_of = scope:owner }
				is_close_or_extended_family_of = scope:owner
				NOR = {
					accepts_incest_with_trigger = { CHARACTER = scope:owner } #100% fine with incest with owner
					scope:owner = { has_perk = subtle_desire_perk }  # The Subtle Desire Perk nullifies this
					guaranteed_under_20_incest_rejection_trigger = { # handled by hard block modifier
						TARGET = scope:target
						SEDUCER = scope:owner
					}
				}
			}
		}
		modifier = { #Incest hard block
			add = -1000
			desc = SCHEME_SEDUCE_UNWILLING_INCEST
			guaranteed_under_20_incest_rejection_trigger = {
				TARGET = scope:target
				SEDUCER = scope:owner
			}
		}
		modifier = { #Sodomy
			add = -20
			desc = SCHEME_SEDUCE_TABOO_SODOMY
			scope:target = {
				relation_with_character_is_sodomy_in_my_or_lieges_faith_trigger = { CHARACTER = scope:owner }
				NOT = { freely_accepts_sodomy_with_trigger = { CHARACTER = scope:owner } }
				NOT = { has_perk = unshackled_lust_perk }
			}

		}

		# Dynasty Kin Personal Scheme Success Chance on Dynasty Perk
		modifier = {
			add = kin_legacy_4_success_chance
			desc = KIN_LEGACY_DESC
			exists = scope:owner.dynasty
			scope:owner.dynasty = {
				has_dynasty_perk = kin_legacy_4
			}
			scope:target.dynasty = scope:owner.dynasty
		}

		# House Personal Scheme Success Chance on Cultural Parameter
		modifier = {
			add = cultural_house_personal_scheme_success_chance
			desc = KIN_PARAMETER_DESC
			exists = scope:owner.house
			exists = scope:target.house
			scope:owner.culture = {
				has_cultural_parameter = cultural_house_personal_scheme_success_chance
			}
			scope:target.house = scope:owner.house
		}
		
		# Charmer Accolade
		modifier = {
			add = accolade_seduction_vulnerability_value
			desc = ACCOLADE_COURT_SEDUCTION_VULNERABILITY_DESC
			scope:target = {
				host ?= {
					any_active_accolade = {
						accolade_parameter = accolade_court_seduction_vulnerability
					}
				}
			}
		}

		# Modifiers
		modifier = {
			scope:owner = { has_character_modifier = poet_for_seduction_schemes_modifier }
			desc = poet_for_seduction_schemes_modifier
			add = 20
		}

		modifier = {
			scope:target = {
				court_owner ?= {
					has_character_flag = keeper_of_the_harem_maintaining_decorum
				}
				is_consort_of = scope:target.court_owner
				NOT = {
					is_consort_of = scope:owner
				}
			}
			add = -50
		}

		# Personal Scheme Shared
		personal_scheme_base_success_chance_modifiers = yes
	}
	base_secrecy = {
		add = secrecy_base_value
		add = countermeasure_apply_secrecy_maluses_value
	}
	
	# On Actions
	on_start = {
		set_variable = {
			name = apply_countermeasures
			value = flag:opportunistic
		}
		#Handle incest hard reject
		save_scope_as = scheme
		scheme_owner = { save_scope_as = owner }
		scheme_target_character = { save_scope_as = target }

		if = {
			limit = {
				scope:target = {
					is_close_or_extended_family_of = scope:owner
					NOT = { is_consort_of = scope:owner }
				}
			}
			scope:target = {
				trigger_event = {
					id = seduce_outcome.8101 #Hard reject event, ai weights on options determine yes/no
					days = { 7 14 }
				}
			}
		}
		else_if = {
			limit = {
				scope:target = {
					house_has_feud_relation_with_trigger = { TARGET = scope:owner }
				}
			}
			scope:target = {
				trigger_event = {
					id = bp1_house_feud.0700 #Hard reject event, ai weights on options determine yes/no
					days = { 7 14 }
				}
			}
		}
	}
	on_phase_completed = {
		# Grab our scopes.
		save_scope_as = scheme
		scheme_target_character = { save_scope_as = target }
		scheme_owner = { save_scope_as = owner }
		# Set up a block for the inappropriate cheating error?
		save_scope_value_as = {
			name = ignore_cheating_error_check
			value = yes
		}
		# Proceed to rolls.
		scope:scheme.scheme_owner = {
			#Do I want to proceed to a roll?
			if = {
				limit = {
					is_ai = no
					use_seduce_secrecy_trigger = {
						TARGET = scope:target
						OWNER = scope:owner
					}
				}
				trigger_event = seduce_outcome.0001
			}
			#Jump straight to roll
			else = {
				trigger_event = seduce_outcome.0002
			}
		}
	}
	on_monthly = {
		save_scope_as = scheme
		scheme_owner = { save_scope_as = owner }
		scheme_target_character = { save_scope_as = target }

		hostile_scheme_monthly_discovery_chance_effect = yes

		#Milestone 1 event
		if = {
			limit = {
				scheme_progress < scheme_progress_50
				NOR = {
					has_scheme_modifier = seduce_success_1_modifier
					has_scheme_modifier = seduce_failure_1_modifier
					has_variable = declined_seduce_milestone_1_event
				}
				scheme_owner = {
					is_available = yes
				}
				scheme_target_character = {
					is_available = yes
				}
				player_target_available_for_personal_scheme_ongoing_events_trigger = {
					OWNER = scope:owner
					TARGET = scope:target
				}
			}
			scheme_owner = {
				trigger_event = { on_action = seduce_ongoing_milestone_1 }
			}
		}
		#Milestone 2 event
		else_if = {
			limit = {
				scheme_progress >= scheme_progress_50
				NOR = {
					has_scheme_modifier = seduce_success_2_modifier
					has_scheme_modifier = seduce_failure_2_modifier
					has_variable = declined_seduce_milestone_2_event
				}
				scheme_owner = {
					is_available = yes
				}
				scheme_target_character = {
					is_available = yes
				}
				player_target_available_for_personal_scheme_ongoing_events_trigger = {
					OWNER = scope:owner
					TARGET = scope:target
				}
			}
			scheme_owner = {
				trigger_event = { on_action = seduce_ongoing_milestone_2 }
			}
		}
	}
	on_invalidated = {
		save_scope_as = scheme
		scheme_target_character = {
			save_scope_as = target
		}
		scheme_owner = {
			save_scope_as = owner
		}
		if = {
			limit = {
				scope:target = { is_alive = no }
			}
			scope:owner = {
				trigger_event = seduce_outcome.0005
			}
		}
		#I am already their lover!
		if = {
			limit = {
				NOT = { scheme_progress = scope:scheme.scheme_phase_duration }
				scope:owner = { has_relation_lover = scope:target }
			}
			scope:owner = {
				trigger_event = seduce_outcome.0004
			}
		}
		else_if = { #fallback invalidation
			limit = {
				OR = {
					#We're already soulmates
					scope:owner = {
						has_relation_soulmate = scope:target
					}

					#We're already lovers
					scope:owner = {
						has_relation_lover = scope:target
					}

					#You've been kicked out of bed
					scope:owner = {
						has_character_modifier = rejected_from_marriage_bed_modifier
						is_spouse_of = scope:target 
					}
						
					scope:owner = {  has_trait = celibate  }
					scope:target = {  has_trait = celibate }
					
					scope:owner = { is_imprisoned = yes }
					scope:target = { is_imprisoned = yes }

					scope:target = {
						NOR = {
							exists = location
							in_diplomatic_range = scope:owner
						}
					}
				}
			}
			scope:owner = {
				send_interface_toast = {
					type = event_toast_effect_neutral
					title = seduce
					left_icon = scope:target
					custom_tooltip = seduce_invalid
				}
			}
		}

		if = {
			limit = {
				scope:target = { 
					NOT = { in_diplomatic_range = scope:owner } 
				}
			}
			scope:owner = {
				send_interface_toast = {
					type = event_toast_effect_neutral
					title = seduce_invalidated_title
					left_icon = scope:target
					custom_description_no_bullet = {
						object = scope:target
						text = scheme_target_not_in_diplomatic_range
					}
				}
			}
		}
	}
}
