﻿# This is a "simple scheme" version of Fascinare
regula_fascinare = {
	# Basic Setup
	skill = diplomacy
	desc = regula_fascinare_desc_general
	success_desc = "FASCINARE_SUCCESS_DESC"
	icon = icon_scheme_regula
	illustration = "gfx/interface/illustrations/event_scenes/regula_house_arrest.dds"
	target_type = character
	is_secret = yes
	maximum_breaches = 5
	is_basic = yes

	# Parameters
	speed_per_skill_point = 0
	spymaster_speed_per_skill_point = 0	
	uses_resistance = no
	base_progress_goal = t2_base_phase_length_value
	base_maximum_success = 100
	minimum_success = 25
	
	# Core Triggers
	allow = {
		fascinare_allowed = yes	# Must be Magister or have holy site effect
		magister_alive_trigger = yes
		is_adult = yes
		is_imprisoned = no
		scope:target = {
			is_adult = yes
			is_male = no # Leaving the door open for futas, etc.
			is_regula_devoted_trigger = no
			is_imprisoned = no
		}

		# Travelling is ok if actor/target is landless adventurer
		trigger_if = {
			limit = {
				NOR = { 
					government_has_flag = government_is_landless_adventurer 
					is_liege_or_above_of = scope:target
				}
			}
			is_travelling = no
		}
		scope:target = {
			is_adult = yes
			trigger_if = {
				limit = {
					scope:owner = {
						NOR = { 
							government_has_flag = government_is_landless_adventurer 
							is_liege_or_above_of = scope:target
						}
					}
				}
				is_travelling = no
			}
		}
	}

	valid = {
		NOT = { has_trait = incapable }
		is_imprisoned = no
		scope:owner = {
			is_adult = yes
		}
		scope:target = {
			is_adult = yes
			is_imprisoned = no
			is_incapable = no
			is_regula_devoted_trigger = no
			NOT = { has_trait = incapable }
			OR = {
				exists = location
				in_diplomatic_range = scope:owner
			}
		}
	}

	use_secrecy = {
		use_fascinare_secrecy_trigger = yes

		# use_seduce_secrecy_trigger = {
		# 	TARGET = scope:target
		# 	OWNER = scope:owner
		# }
	}

	odds_prediction = {
		add = base_odds_prediction_target_is_char_value
		add = odds_skill_contribution_diplomacy_value
		# add = odds_seduce_scheme_misc_value
		min = 25
	}

	base_success_chance = {
		base = 0
		scheme_type_skill_success_chance_modifier = { SKILL = DIPLOMACY }

		# # Diplomacy based
		# compare_modifier = {
		# 	desc = "sway_my_diplomacy"
		# 	target = scope:owner
		# 	value = diplomacy
		# 	multiplier = 2
		# }
		
		# Countermeasures.
		apply_opportunistic_scheme_success_chance_adjustments_modifier = yes
		
		#Language
		modifier = {
			add = 5
			desc = YOU_SPEAK_THE_LANGUAGE
			scope:owner = { knows_language_of_culture = scope:target.culture }
		}

		# Magister courtier/guest
		modifier = {
			desc = FASCINARE_SUBJECT_BONUS
			scope:target = {
				OR = {
					is_foreign_court_or_pool_guest = yes
					is_courtier = yes
				}
				OR = {
					court_owner.top_liege = scope:owner
					court_owner = scope:owner
				}
			}
			add = 40
		}

		# Not super important courtier/guest
		modifier = {
			desc = FASCINARE_UNIMPORTANT_BONUS
			scope:target = {
				OR = {
					is_foreign_court_or_pool_guest = yes
					is_courtier = yes
				}
				NOR = {
					court_owner.top_liege = scope:owner
					court_owner = scope:owner
					court_owner = {
						is_close_family_of = scope:target
					}
					court_owner = {
						is_consort_of = scope:target
					}
				}
			}
			add = 20
		}
		
		# Vanilla modifiers below
		# Perks etc
		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 = {
				exists = dynasty
				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
		}

		#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 = 75
			desc = "SCHEME_SEDUCE_SPOUSE_BONUS"
		}
		#Target is owner's lover.
		modifier = {
			add = 100
			scope:owner = {
				has_relation_lover = scope:target
			}
			desc = "HAS_RELATION_LOVER_WITH_TARGET"
		}
		#Target is owner's soulmate.
		modifier = {
			add = 200
			scope:owner = {
				has_relation_soulmate = scope:target
			}
			desc = "HAS_RELATION_SOULMATE_WITH_TARGET"
		}
		#Target is owner's friend.
		modifier = {
			add = 50
			scope:owner = {
				has_relation_friend = scope:target
			}
			desc = "HAS_RELATION_FRIEND_WITH_TARGET"
		}
		#Target is owner's best friend.
		modifier = {
			add = 150
			scope:owner = {
				has_relation_best_friend = scope:target
			}
			desc = "HAS_RELATION_BEST_FRIEND_WITH_TARGET"
		}
		#Target is owner's rival.
		modifier = {
			add = -50
			scope:owner = {
				has_relation_rival = scope:target
			}
			desc = "HAS_RELATION_RIVAL_WITH_TARGET"
		}
		#Target is owner's nemesis.
		modifier = {
			add = -150
			scope:owner = {
				has_relation_nemesis = scope:target
			}
			desc = "HAS_RELATION_NEMESIS_WITH_TARGET"
		}

		# 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
				exists = primary_spouse
				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 = {
					exists = religious_head
					religious_head = {
						this = scope:target
					}
				}
			}
		}

		# 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
		}

		# Thicker Than Water Perk
		modifier = {
			add = thicker_than_water_bonus
			desc = BEFRIEND_THICKER_THAN_WATER_PERK_DESC
			scope:owner = {
				has_perk = thicker_than_water_perk
			}
			scope:target = {
				is_close_or_extended_family_of = scope:owner
			}
		}

		# Modifiers
		# house_head_request_interaction
		modifier = {
			add = personal_scheme_variable_list_value
			scope:owner = {
				has_variable_list = supporting_personal_schemes
			}
			desc = HOUSE_HEAD_SCHEME_SUPPORT_DESC
		}
		modifier = {
			add = -10
			scope:owner = { has_character_modifier = personal_schemes_distracted_modifier }
			desc = personal_schemes_distracted_modifier
		}
		# Estate
		modifier = {
			scope:owner.domicile ?= {
				has_domicile_parameter = increased_success_personal_schemes_1
			}
			add = estate_increased_personal_scheme_success_1_value
		}
		modifier = {
			scope:owner.domicile ?= {
				has_domicile_parameter = increased_success_personal_schemes_2
			}
			add = estate_increased_personal_scheme_success_2_value
		}
		modifier = {
			scope:owner.domicile ?= {
				has_domicile_parameter = increased_success_personal_schemes_3
			}
			add = estate_increased_personal_scheme_success_3_value
		}
	}

	base_secrecy = {
		add = secrecy_base_value
		add = countermeasure_apply_secrecy_maluses_value
	}
	
	# On Actions
	on_start = {

		save_scope_as = scheme
		scheme_owner = { save_scope_as = owner }
		scheme_target_character = { save_scope_as = target }

		scope:scheme = {
			add_scheme_progress = fascinare_start_progress
		}
	}

	on_phase_completed = {
		scheme_owner = {
			#Do I want to proceed to a roll?
			if = {
				limit = {
					is_ai = no
					OR = {
						use_fascinare_secrecy_trigger = yes
						is_ruler = yes
					}
					global_var:fascinare_events_enabled = yes
				}
				trigger_event = fascinare_outcome.0001
			}
			#Jump straight to roll
			else = {
				trigger_event = fascinare_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

		# TODO, finish events
		# #Milestone 1 event
		# if = {
		# 	limit = {
		# 		NOR = {
		# 			has_scheme_modifier = fascinare_success_1_modifier
		# 			has_scheme_modifier = fascinare_failure_1_modifier
		# 			has_variable = declined_fascinare_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 = fascinare_ongoing_milestone_1 }
		# 	}
		# }
		# #Milestone 2 event
		# else_if = {
		# 	limit = {
		# 		NOR = {
		# 			has_scheme_modifier = fascinare_success_2_modifier
		# 			has_scheme_modifier = fascinare_failure_2_modifier
		# 			has_variable = declined_fascinare_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 = fascinare_ongoing_milestone_2 }
		# 	}
		# }
	}

	on_invalidated = {
		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
			}
		}
		else_if = { #fallback invalidation
			limit = {
				OR = {
					scope:owner = { is_imprisoned = yes }
					scope:target = { is_imprisoned = yes }

					scope:target = {
						NOR = {
							exists = location
							in_diplomatic_range = scope:owner
						}
					}
				}
			}
			scheme_owner = {
				send_interface_message = {
					type = regula_fascinare_charm_invalid
					title = fascinare_invalid_title
					left_icon = scope:target
					custom_tooltip = fascinare_invalid
					add_piety = 100
				}
			}
		}
	}
}
