﻿# agot spy network by Ronko

namespace = agot_spy_network

# Event fires on spy network owner, firing events on all of their spies to gather secrets
agot_spy_network.0100 = {
	type = character_event
	hidden = yes

	immediate = {
		if = {
			limit = {
				has_variable_list = spy_network_members
				any_in_list = {
					variable = spy_network_members
					is_alive = yes
					count >= 1
				}
				NOT = { exists = var:surveil_target }
			}

			# Every quarter, each spy has a intrigue % chance of discovering a random secret/scheme and revealing it to you
			# There is a random 0-15 day delay, so secret/scheme reveals are approximately equally distributed over the year
			every_in_list = {
				variable = spy_network_members
				if = {
					limit = {
						is_alive = yes
						is_courtier = yes
						is_landed = no
						is_pool_guest = no
						is_imprisoned = no
						court_owner = { is_ruler = yes }
						NOT = { has_trait = incapable }
					}
					random = {
						chance = 0
						modifier = {
							add = intrigue
						}
						modifier = {
							root = {
								exists = cp:councillor_spymaster
							}
							add = root.cp:councillor_spymaster.intrigue
						}
						modifier = {
							root = { 
								exists = var:femme_fatale_is_embracing_the_spiders
								var:femme_fatale_is_embracing_the_spiders = yes
							}
							add = 5
						}
						modifier = {
							root = {
								house ?= {
									OR = {
										has_house_modifier = sas_house_of_sabotage_and_subterfuge_modifier_renown_massive
										has_house_modifier = sas_house_of_sabotage_and_subterfuge_modifier_renown_major
										has_house_modifier = sas_house_of_sabotage_and_subterfuge_modifier_renown_medium
										has_house_modifier = sas_house_of_sabotage_and_subterfuge_modifier_renown_minor
										has_house_modifier = sas_house_of_sabotage_and_subterfuge_modifier_renown_tiny
										has_house_modifier = sas_house_of_sabotage_and_subterfuge_modifier_intrigue_xp_massive
										has_house_modifier = sas_house_of_sabotage_and_subterfuge_modifier_intrigue_xp_major
										has_house_modifier = sas_house_of_sabotage_and_subterfuge_modifier_intrigue_xp_medium
										has_house_modifier = sas_house_of_sabotage_and_subterfuge_modifier_intrigue_xp_minor
										has_house_modifier = sas_house_of_sabotage_and_subterfuge_modifier_intrigue_xp_tiny
										has_house_modifier = sas_house_of_sabotage_and_subterfuge_modifier_none
									}
								}
							}
							add = 5
						}
						modifier = {
							add = {
								value = root.spy_network_over_limit_penalty
								multiply = -1							
							}
						}
						trigger_event = {
							id = agot_spy_network.0200
							days = { 1 15 }
						}
					}
				}
				else = {
					root = {
						remove_list_variable = {
							name = spy_network_members
							target = prev
						}
					}
				}
			}
		}
		else_if = {
			limit = {
				exists = var:surveil_target
				has_variable_list = spy_network_members
				any_in_list = {
					variable = spy_network_members
					is_alive = yes
					count >= 1
					OR = {
						court_owner = root.var:surveil_target
						court_owner = root.var:surveil_target.court_owner
					}
				}
			}
			random = {
				chance = 0
				modifier = {
					add = surveil_target_success_chance
				}
				# Grab any spy in surveil_target's court
				random_in_list = {
					variable = spy_network_members
					limit = {
						is_alive = yes
						OR = {
							court_owner = root.var:surveil_target
							court_owner = root.var:surveil_target.court_owner
						}
					}
					
					trigger_event = {
						id = agot_spy_network.0201
						days = { 1 15 }
					}
				}
			}
		}
		else  = {

		}
	}
}

# Chance to discover innovation
agot_spy_network.0105 = {
	type = character_event
	hidden = yes
	immediate = {
		if = {
			limit = {
				has_variable_list = spy_network_members
				any_in_list = {
					variable = spy_network_members
					count >= 1
				}
				root.culture.culture_head = root
				house ?= { has_house_modifier = sas_expand_spy_network_house_modifier }
			}
			random_in_list = {
				variable = spy_network_members
				save_temporary_scope_as = spy_temp
				if = {
					limit = {
						is_alive = yes
						is_courtier = yes
						is_landed = no
						is_pool_guest = no
						is_imprisoned = no
						court_owner = { is_ruler = yes }
						NOT = { has_trait = incapable }
						# NOT = { exists = root.var:spies_discovered_free_innovation }
					}
					if = {
						limit = {
							root.culture = { can_get_innovation_from = scope:spy_temp.liege.capital_county.culture }
						}

						scope:spy_temp.liege.capital_county.culture = {
							random_known_innovation = {
								limit = {
									NOT = { is_known_by_culture = root.culture }
								}
								save_scope_as = new_stolen_innovation
							}
						}
						# Unlock an entire innovation
						# random = {
						# 	chance = 1
						# 	root = {
						# 		send_interface_message = {
						# 			type = event_toast_effect_good
						# 			title = sas_spy_stole_innovation_message
						# 			left_icon = root
						# 			right_icon = scope:spy_temp
						# 			root.culture = {
						# 				add_innovation = scope:new_stolen_innovation
						# 			}
						# 		}
						# 		hidden_effect = {
						# 			set_variable = {
						# 				name = spies_discovered_free_innovation
						# 				value = yes
						# 				years = 30
						# 			}
						# 		}
						# 	}	
						# }
						random = {
							chance = 10
							modifier = {
								root = {
									exists = var:femme_fatale_is_embracing_the_spiders
									var:femme_fatale_is_embracing_the_spiders = yes
								}
								add = 10
							}
							modifier = {
								root = {
									house ?= {
										OR = {
											has_house_modifier = sas_house_of_sabotage_and_subterfuge_modifier_renown_massive
											has_house_modifier = sas_house_of_sabotage_and_subterfuge_modifier_renown_major
											has_house_modifier = sas_house_of_sabotage_and_subterfuge_modifier_renown_medium
											has_house_modifier = sas_house_of_sabotage_and_subterfuge_modifier_renown_minor
											has_house_modifier = sas_house_of_sabotage_and_subterfuge_modifier_renown_tiny
											has_house_modifier = sas_house_of_sabotage_and_subterfuge_modifier_intrigue_xp_massive
											has_house_modifier = sas_house_of_sabotage_and_subterfuge_modifier_intrigue_xp_major
											has_house_modifier = sas_house_of_sabotage_and_subterfuge_modifier_intrigue_xp_medium
											has_house_modifier = sas_house_of_sabotage_and_subterfuge_modifier_intrigue_xp_minor
											has_house_modifier = sas_house_of_sabotage_and_subterfuge_modifier_intrigue_xp_tiny
											has_house_modifier = sas_house_of_sabotage_and_subterfuge_modifier_none
										}
									}
								}
								add = 10
							}
							modifier = {
								add = {
									value = root.spy_network_over_limit_penalty
									multiply = -1							
								}
							}
							root = {
								send_interface_message = {
									type = event_toast_effect_good
									title = sas_spy_stole_innovation_progress_message
									left_icon = root
									right_icon = scope:spy_temp
									root.culture = {
										add_innovation_progress = {
											value = scope:spy_temp.intrigue
											target = scope:new_stolen_innovation
										}
									}
								}
							}
						}
					}
				}
			}
		}
	}
}

# Reveals one random secret/scheme from someone in the same court as the spy
# This can be the court's owner, a courtier, or a guest, but will never reveal the spy's own secrets
agot_spy_network.0200 = {
	type = character_event
	hidden = yes

	trigger = {
		any_ruler = {
			is_alive = yes
			is_target_in_variable_list = {
				name = spy_network_members
				target = root
			}
		}
	}

	immediate = {
		save_scope_as = secret_finder
		# Save scope of spy's employer
		every_ruler = {
			limit = {
				is_alive = yes
				is_target_in_variable_list = {
					name = spy_network_members
					target = root
				}
			}

			save_scope_as = employer
		}

		if = {
			limit = {
				exists = court_owner
			}

			# Find all the court owner's secrets
			court_owner = {
				save_scope_as = courtowner
				if = {
					# Spies won't reveal their own secrets / Jame and Cersei secret protection
					limit = {
						NOR = {
							this = root
							this = scope:employer
						}
					}

					# List the court owner's secrets that could be revealed
					every_secret = {
						limit = {
							# Only check secrets that the employer doesn't know yet
							NOT = {
								any_secret_knower = {
									this = scope:employer
								}
							}
							scope:employer = {
								NOT = {
									is_target_in_variable_list = {
										name = refused_secrets
										target = prev
									}
								}
							}
							NOT = {
								AND = {
									secret_type = secret_lover
									secret_target = scope:secret_finder
								}
							}
						}
						add_to_temporary_list = suitable_secrets
					}
				}
			}

			# Find all the secrets of courtiers and guests in the same court
			court_owner = {
				every_courtier_or_guest = {
					# Spies won't reveal their own secrets / Jame and Cersei secret protection
					limit = {
						NOR = {
							this = root
							this = scope:employer
						}
					}

					every_secret = {
						limit = {
							# Only check secrets that the employer doesn't know yet
							NOT = {
								any_secret_knower = {
									this = scope:employer
								}
							}
							scope:employer = {
								NOT = {
									is_target_in_variable_list = {
										name = refused_secrets
										target = prev
									}
								}
							}
						}
						add_to_temporary_list = suitable_secrets
					}
				}
			}
		}


		if = {
			limit = {
				list_size = {
					name = suitable_secrets
					value >= 1
				}
				NOT = {
					scope:employer = {
						has_character_flag = spy_found_secret_cooldown
					}
				}
			}

			# Pick a Secret to discover
			random_in_list = {
				list = suitable_secrets
				weight = {
					base = 1
				}
				save_scope_as = secret_to_reveal
				secret_owner = {
					save_scope_as = secret_holder
				}
			}

			scope:employer = {
				add_character_flag = { flag = spy_found_secret_cooldown days = 100 }
				trigger_event = {
					id = agot_spy_network.0210
				}
			}
		}

		else_if = { #if no secret is available, check if the court owner or one of his courtiers is scheming against the spies employer and/or his courtiers. If so, reveal the scheme.
			limit = {
				exists = court_owner
			}
			court_owner = {
				every_scheme = {
					if = {
						limit = {
							is_scheme_exposed = no
							hostile_scheme_trigger = yes
							scheme_target_character = {
								OR = {
									this = scope:employer
									court_owner = scope:employer
								}
							}
							scheme_owner = {
								NOT = {
									this = scope:secret_finder
								}
							}
						}
						add_to_temporary_list = suitable_schemes
					}
				}

				every_courtier_or_guest = {
					every_scheme = {
						if = {
							limit = {
								is_scheme_exposed = no
								hostile_scheme_trigger = yes
								scheme_target_character = {
									OR = {
										this = scope:employer
										court_owner = scope:employer
									}
								}
								scheme_owner = {
									NOT = {
										this = scope:secret_finder
									}
								}
							}
							add_to_temporary_list = suitable_schemes
						}
					}
				}
			}

			if = {
				limit = {
					list_size = {
						name = suitable_schemes
						value >= 1
					}
				}

				# Pick a scheme to discover
				random_in_list = {
					list = suitable_schemes
					weight = {
						base = 1
					}

					#set necessary scopes for vanilla event
					save_scope_as = scheme
					scope:secret_finder = {
						save_scope_as = spymaster
					}
					scheme_target_character = {
						save_scope_as = target
					}
					scheme_owner = {
						save_scope_as = owner
					}

					scope:target.host = {
						trigger_event = hostile_scheme_discovery.2001
					}
				}
			}
		}
	}
}


# Reveals one random secret/scheme from the surveil target
agot_spy_network.0201 = {
	type = character_event
	hidden = yes

	trigger = {
		any_ruler = {
			is_alive = yes
			is_target_in_variable_list = {
				name = spy_network_members
				target = root
			}
		}
	}

	immediate = {
		save_scope_as = secret_finder
		# Save scope of spy's employer
		every_ruler = {
			limit = {
				is_alive = yes
				is_target_in_variable_list = {
					name = spy_network_members
					target = root
				}
			}

			save_scope_as = employer
		}
		scope:employer.var:surveil_target = {
			save_scope_as = surveil_target
		}

		scope:surveil_target = {
			# List the court owner's secrets that could be revealed
			every_secret = {
				limit = {
					# Only check secrets that the employer doesn't know yet
					NOT = {
						any_secret_knower = {
							this = scope:employer
						}
					}
					NOT = {
						AND = {
							secret_type = secret_lover
							secret_target = scope:secret_finder
						}
					}
				}
				add_to_temporary_list = suitable_secrets
			}
		}

		if = {
			limit = {
				list_size = {
					name = suitable_secrets
					value >= 1
				}
				NOT = {
					scope:employer = {
						has_character_flag = spy_found_secret_cooldown
					}
				}
			}

			# Pick a Secret to discover
			random_in_list = {
				list = suitable_secrets
				weight = {
					base = 1
				}
				save_scope_as = secret_to_reveal
				secret_owner = {
					save_scope_as = secret_holder
				}
			}

			scope:employer = {
				add_character_flag = { flag = spy_found_secret_cooldown days = 100 }
				trigger_event = {
					id = agot_spy_network.0212
				}
			}
		}
		else = { #if no secret is available, check if the court owner or one of his courtiers is scheming against the spies employer and/or his courtiers. If so, reveal the scheme.
			scope:surveil_target = {
				every_scheme = {
					if = {
						limit = {
							is_scheme_exposed = no
							hostile_scheme_trigger = yes
							scheme_target_character = {
								OR = {
									this = scope:employer
									court_owner = scope:employer
								}
							}
							scheme_owner = {
								NOT = {
									this = scope:secret_finder
								}
							}
						}
						add_to_temporary_list = suitable_schemes
					}
				}
			}
		}

		if = {
			limit = {
				list_size = {
					name = suitable_schemes
					value >= 1
				}
				list_size = {
					name = suitable_secrets
					value = 0
				}
			}

			# Pick a scheme to discover
			random_in_list = {
				list = suitable_schemes
				weight = {
					base = 1
				}

				#set necessary scopes for vanilla event
				save_scope_as = scheme
				scope:secret_finder = {
					save_scope_as = spymaster
				}
				scheme_target_character = {
					save_scope_as = target
				}
				scheme_owner = {
					save_scope_as = owner
				}

				scope:target.host = {
					trigger_event = hostile_scheme_discovery.2001
				}
			}
		}
		else_if = {
			limit = {
				list_size = {
					name = suitable_secrets
					value = 0
				}
				list_size = {
					name = suitable_schemes
					value = 0
				}
			}
			scope:employer = {
				trigger_event = {
					id = agot_spy_network.0211
				}
			}
		}
		else = {

		}
	}
}

agot_spy_network.0210 = { #ask for money in exchange for secret
	type = letter_event
	opening = agot_spy_network.0210.t
	desc = agot_spy_network.0210.desc
	sender = scope:secret_finder

	option = { #yes
		name = agot_spy_network.0210.a

		trigger = {
			gold >= 25
		}

		remove_short_term_gold = 25
		scope:secret_finder = { add_gold = 25 }

		# Reveal the secret to the employer
		scope:employer = {
			send_interface_message = {
				type = msg_spymaster_task_good 	# todo: change this
				title = agot_spy_network.0200.interface.employer.t
				desc = agot_spy_network.0200.interface.employer.desc

				left_icon = scope:secret_holder
				right_icon = scope:secret_finder

				scope:secret_to_reveal = {
					reveal_to = scope:employer
				}
			}
			# Count secret bought towards running total
			if = {
				limit = {
					exists = var:number_of_secrets_bought
				}
				change_variable = {
					name = number_of_secrets_bought
					add = 1
				}
			}
			else = {
				set_variable = {
					name = number_of_secrets_bought
					value = 1
				}
			}
		}

		ai_chance = {
			base = 100
		}
	}

	option = { #not interested
		name = agot_spy_network.0210.b

		trigger = {
			gold >= 25
		}

		scope:secret_to_reveal = {
			scope:employer = {
				add_to_variable_list = {
					name = refused_secrets
					target = prev
				}
			}
		}

		ai_chance = {
			base = 0
		}
	}

	option = { #not enough money
		name = agot_spy_network.0210.c

		trigger = {
			gold < 25
		}

		ai_chance = {
			base = 100
		}
	}
}

agot_spy_network.0211 = { #confirm zero secrets on surveil target
	type = letter_event
	opening = agot_spy_network.0211.t
	desc = agot_spy_network.0211.desc
	sender = scope:secret_finder

	option = { #excellent, stop surveillance
		name = agot_spy_network.0211.a
		custom_tooltip = surveil_target_no_more_secrets
		remove_variable = surveil_target

		ai_chance = {
			base = 100
		}
	}

	option = { #contionue anyways
		name = agot_spy_network.0211.b

		ai_chance = {
			base = 100
		}
	}
}

agot_spy_network.0212 = { #ask for money in exchange for secret on surveil target
	type = letter_event
	opening = agot_spy_network.0212.t
	desc = agot_spy_network.0212.desc
	sender = scope:secret_finder

	option = { #yes
		name = agot_spy_network.0212.a

		trigger = {
			gold >= 25
		}

		remove_short_term_gold = 25
		scope:secret_finder = { add_gold = 25 }

		# Reveal the secret to the employer
		scope:employer = {
			send_interface_message = {
				type = msg_spymaster_task_good 	# todo: change this
				title = agot_spy_network.0210.interface.employer.t
				desc = agot_spy_network.0210.interface.employer.desc

				left_icon = scope:secret_holder
				right_icon = scope:secret_finder

				scope:secret_to_reveal = {
					reveal_to = scope:employer
				}
			}
			# Count secret bought towards running total
			if = {
				limit = {
					exists = var:number_of_secrets_bought
				}
				change_variable = {
					name = number_of_secrets_bought
					add = 1
				}
			}
			else = {
				set_variable = {
					name = number_of_secrets_bought
					value = 1
				}
			}
		}

		ai_chance = {
			base = 100
		}
	}

	option = { #not interested
		name = agot_spy_network.0212.b

		trigger = {
			gold >= 25
		}

		scope:secret_to_reveal = {
			scope:employer = {
				add_to_variable_list = {
					name = refused_secrets
					target = prev
				}
			}
		}

		ai_chance = {
			base = 0
		}
	}

	option = { #not enough money
		name = agot_spy_network.0212.c

		trigger = {
			gold < 25
		}

		ai_chance = {
			base = 100
		}
	}
}


# AI selects the next spy to employ
agot_spy_network.0300 = {
	type = character_event
	hidden = yes

	immediate = {

		every_relation = {
			type = rival
			limit = {
				is_landed = yes
				in_diplomatic_range = root
			}
			every_courtier = {
				limit = {
					is_ai = yes
					OR = {
						is_adult = yes
						AND = {
							age >= 8
							root = {
								house ?= { has_house_modifier = sas_expand_spy_network_house_modifier }
							}
						}
					}
					is_imprisoned = no
					is_courtier = yes
					is_pool_guest = no
					is_landed = no
					court_owner = { is_ruler = yes }
					NOT = { has_trait = incapable }
					root = {
						is_character_interaction_potentially_accepted = {
							recipient = PREV
							interaction = agot_invite_to_spy_network_interaction
						}
					}
				}
				root = {
					add_to_variable_list = {
						name = potential_spies
						target = PREV
					}
				}
			}
		}

		every_vassal = {
			limit = {
				highest_held_title_tier >= tier_county
				in_diplomatic_range = root
				root = {
					opinion = {
						target = PREV
						value < 0
					}
				}
			}
			every_courtier = {
				limit = {
					is_ai = yes
					OR = {
						is_adult = yes
						AND = {
							age >= 8
							root = {
								house ?= { has_house_modifier = sas_expand_spy_network_house_modifier }
							}
						}
					}
					is_imprisoned = no
					is_courtier = yes
					is_pool_guest = no
					is_landed = no
					court_owner = { is_ruler = yes }
					NOT = { has_trait = incapable }
					root = {
						is_character_interaction_potentially_accepted = {
							recipient = PREV
							interaction = agot_invite_to_spy_network_interaction
						}
					}
				}
				root = {
					add_to_variable_list = {
						name = potential_spies
						target = PREV
					}
				}
			}
		}

		liege = {
			every_courtier = {
				limit = {
					is_ai = yes
					OR = {
						is_adult = yes
						AND = {
							age >= 8
							root = {
								house ?= { has_house_modifier = sas_expand_spy_network_house_modifier }
							}
						}
					}
					is_imprisoned = no
					is_courtier = yes
					is_pool_guest = no
					is_landed = no
					court_owner = { is_ruler = yes }
					NOT = { has_trait = incapable }
					root = {
						is_character_interaction_potentially_accepted = {
							recipient = PREV
							interaction = agot_invite_to_spy_network_interaction
						}
					}
				}
				root = {
					add_to_variable_list = {
						name = potential_spies
						target = PREV
					}
				}
			}

			every_vassal = {
				limit = {
					highest_held_title_tier >= tier_county
					in_diplomatic_range = root
					NOT = { this = root }
					root = {
						opinion = {
							target = PREV
							value < 0
						}
					}
				}
				every_courtier = {
					limit = {
						is_ai = yes
						OR = {
							is_adult = yes
							AND = {
								age >= 8
								root = {
									house ?= { has_house_modifier = sas_expand_spy_network_house_modifier }
								}
							}
						}
						is_imprisoned = no
						is_courtier = yes
						is_pool_guest = no
						is_landed = no
						court_owner = { is_ruler = yes }
						NOT = { has_trait = incapable }
						root = {
							is_character_interaction_potentially_accepted = {
								recipient = PREV
								interaction = agot_invite_to_spy_network_interaction
							}
						}
					}
					root = {
						add_to_variable_list = {
							name = potential_spies
							target = PREV
						}
					}
				}
			}
		}

		if = {
			limit = {
				has_variable_list = potential_spies
				any_in_list = {
					variable = potential_spies
					is_alive = yes
					count >= 1
				}
			}
			random_in_list = {
				variable = potential_spies
				limit = {
					is_alive = yes
					is_ai = yes
					OR = {
						is_adult = yes
						AND = {
							age >= 8
							root = {
								house ?= { has_house_modifier = sas_expand_spy_network_house_modifier }
							}
						}
					}
					is_imprisoned = no
					is_courtier = yes
					is_pool_guest = no
					is_landed = no
					court_owner = { is_ruler = yes }
				}
				weight = {
					base = 1
					modifier = {
						add = {
							value = 0
							add = intrigue
						}
					}
					modifier = {
						add = 50
						NOT = { court_owner = root }
						root = {
							opinion = {
								target = court_owner
								value < 0
							}
						}
					}
					modifier = {
						add = 100
						root = { has_relation_rival = court_owner }
					}
				}
				save_scope_as = new_spy
			}
			root = {
				add_to_variable_list = {
					name = spy_network_members
					target = scope:new_spy
				}
				clear_variable_list = potential_spies
			}
		}
	}
}

agot_spy_network.0400 = { # Spymaster task "find secrets" recruits a spy in targets court
	type = character_event
	title = agot_spy_network.0400.t
	desc = agot_spy_network.0400.desc

	theme = intrigue

	left_portrait = {
		character = scope:councillor
		animation = scheme
	}

	right_portrait = {
		character = scope:new_spy
		animation = scheme
	}

	trigger = {
		exists = cp:councillor_spymaster
		scope:councillor = cp:councillor_spymaster

		OR = {
			NOT = { has_variable_list = spy_network_members }
			any_in_list = {
				variable = spy_network_members
				is_alive = yes
				count < spy_network_limit
			}
		}

		scope:target_character = {
			is_landed = yes
			in_diplomatic_range = root
			any_courtier = {
				is_ai = yes
				OR = {
					is_adult = yes
					AND = {
						age >= 8
						root = {
							house ?= { has_house_modifier = sas_expand_spy_network_house_modifier }
						}
					}
				}
				is_imprisoned = no
				is_courtier = yes
				is_pool_guest = no
				is_landed = no
				NOT = { this = root.cp:councillor_spymaster }
				court_owner = { is_ruler = yes }
				NOT = { has_trait = incapable }
				root = {
					is_character_interaction_potentially_accepted = {
						recipient = PREV
						interaction = agot_invite_to_spy_network_interaction
					}
				}
			}
		}
	}

	weight_multiplier = {
		base = 1
		modifier = {
			add = {
				value = scope:councillor.intrigue
				multiply = 0.05
			}
		}
	}

	immediate = {
		scope:target_character = {
			every_courtier = {
				limit = {
					is_ai = yes
					OR = {
						is_adult = yes
						AND = {
							age >= 8
							root = {
								house ?= { has_house_modifier = sas_expand_spy_network_house_modifier }
							}
						}
					}
					is_imprisoned = no
					is_courtier = yes
					is_pool_guest = no
					is_landed = no
					NOT = { this = root.cp:councillor_spymaster }
					court_owner = { is_ruler = yes }
					NOT = { has_trait = incapable }
					root = {
						is_character_interaction_potentially_accepted = {
							recipient = PREV
							interaction = agot_invite_to_spy_network_interaction
						}
					}
				}
				root = {
					add_to_variable_list = {
						name = potential_spies
						target = PREV
					}
				}
			}
		}

		random_in_list = {
			variable = potential_spies
			limit = {
				is_alive = yes
			}
			weight = {
				base = 1
				modifier = {
					add = {
						value = 0
						add = intrigue
					}
				}
			}
			save_scope_as = new_spy
		}

		root = {
			add_to_variable_list = {
				name = spy_network_members
				target = scope:new_spy
			}
			clear_variable_list = potential_spies
		}
	}

	option = {
		name = agot_spy_network.0400.a
		ai_chance = {
			base = 100
		}
	}
}

agot_spy_network.0500 = { # A spy was discovered by your spymaster
	type = character_event
	title = agot_spy_network.0500.t
	desc = agot_spy_network.0500.desc

	theme = intrigue

	left_portrait = {
		character = scope:councillor
		animation = scheme
	}

	right_portrait = {
		character = scope:discovered_spy
		animation = shame
	}

	trigger = {
		any_courtier = { # there is a spy in court (spymaster and his spies excluded)
			NOT = { this = root.cp:councillor_spymaster }
			any_ruler = {
				is_target_in_variable_list = {
					name = spy_network_members
					target = prev
				}
				NOT = { this = root }
				NOT = { this = root.cp:councillor_spymaster }
			}
		}
	}

	weight_multiplier = {
		base = 1

		modifier = {
			add = {
				value = scope:councillor.intrigue
				multiply = 0.05
			}
		}
	}

	immediate = {
		every_courtier = {
			limit = {
				is_alive = yes
				NOT = { this = root.cp:councillor_spymaster }
				any_ruler = {
					is_target_in_variable_list = {
						name = spy_network_members
						target = prev
					}
					NOT = { this = root }
					NOT = { this = root.cp:councillor_spymaster }
				}
			}
			root = {
				add_to_variable_list = {
					name = discoverable_spies
					target = PREV
				}
			}
		}

		random_in_list = {
			variable = discoverable_spies
			limit = {
				is_alive = yes
			}
			weight = {
				base = 50
				#modifier = {
				#	subtract = {
				#		value = 0
				#		add = intrigue
				#	}
				#}
			}
			save_scope_as = discovered_spy
		}

		clear_variable_list = discoverable_spies

		if = {
			limit = {
				exists = scope:discovered_spy
				any_ruler = {
					is_target_in_variable_list = {
						name = spy_network_members
						target = scope:discovered_spy
					}
					NOT = { this = root }
					NOT = { this = root.cp:councillor_spymaster }
				}
			}
			every_ruler = {
				limit = {
					is_target_in_variable_list = {
						name = spy_network_members
						target = scope:discovered_spy
					}
					NOT = { this = root }
					NOT = { this = root.cp:councillor_spymaster }
				}
				save_scope_as = discovered_spy_employer
			}

			scope:discovered_spy = {
				trigger_event = { # inform spy of discovery and check if he flips
					id = agot_spy_network.0510
				}
			}

			scope:discovered_spy_employer = {
				trigger_event = { # inform employer about discovered spy: Remove from spy list
					id = agot_spy_network.0600
					days = 1
				}
			}
		}
	}

	option = {
		name = agot_spy_network.0500.a

		trigger_event = { # decide on the spies fate
			id = agot_spy_network.0520
			days = 2
		}

		ai_chance = {
			base = 100
		}
	}
}

agot_spy_network.0510 = {
	type = character_event
	title = agot_spy_network.0510.t
	desc = agot_spy_network.0510.desc


	theme = intrigue

	left_portrait = {
		character = scope:discovered_spy
		animation = worry
	}

	option = {
		name = agot_spy_network.0510.a

		add_character_flag = flipped

		court_owner = {
			add_opinion = {
				target = scope:discovered_spy_employer
				modifier = spied_on_me_instigator_opinion
			}
		}

		ai_chance = {
			base = 50
			modifier = {
				add = {
					value = 0
					add = court_owner.dread
				}
			}
			modifier = {
				add = 50
				has_trait = craven
			}
			modifier = {
				factor = 0.1
				scope:discovered_spy_employer = { has_perk = dreadful_perk }
			}
		}
	}

	option = {
		name = agot_spy_network.0510.b

		ai_chance = {
			base = 50
			modifier = {
				add = 50
				has_trait = brave
			}
		}
	}
}

agot_spy_network.0520 = { # A spy was discovered by your spymaster
	type = character_event
	title = agot_spy_network.0520.t

	desc = {
		triggered_desc = {
			trigger = {
				scope:discovered_spy = {
					has_character_flag = flipped
				}
			}
			desc = agot_spy_network.0520.flipped.desc
		}
		triggered_desc = {
			trigger = {
				scope:discovered_spy = {
					NOT = { has_character_flag = flipped }
				}
			}
			desc = agot_spy_network.0520.loyal.desc
		}
		desc = agot_spy_network.0520.desc
	}

	theme = intrigue

	left_portrait = {
		character = scope:councillor
		animation = scheme
	}

	right_portrait = {
		character = scope:discovered_spy
		animation = shame
	}

	trigger = {
		exists = scope:discovered_spy
		scope:discovered_spy = {
			AND = {
				is_alive = yes
				exists = liege
				liege = root
			}
		}
	}

	option = {
		name = agot_spy_network.0520.a   # imprison

		rightfully_imprison_character_effect = {
			TARGET = scope:discovered_spy
			IMPRISONER = root
		}

		ai_chance = {
			base = 100
			modifier = {
				factor = 0.8
				scope:discovered_spy = { has_character_flag = flipped }
			}
		}
	}
	option = {
		name = agot_spy_network.0520.b   # kill

		execute_prisoner_effect = {
			VICTIM = scope:discovered_spy
			EXECUTIONER = root
		}

		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_compassion = -1
				ai_vengefulness = 1
			}
			modifier = {
				factor = 0
				scope:discovered_spy = { is_close_or_extended_family_of = root }
			}
			modifier = {
				factor = 0.1
				scope:discovered_spy = { has_character_flag = flipped }
			}
		}
	}
	option = {
		name = agot_spy_network.0520.c   # mercy

		scope:discovered_spy = {
			add_opinion = {
				target = root
				modifier = merciful_opinion
			}
		}

		ai_chance = {
			base = 100
			ai_value_modifier = {
				ai_compassion = 1
				ai_vengefulness = -1
			}
			modifier = {
				factor = 1.2
				scope:discovered_spy = { has_character_flag = flipped }
			}
		}
	}

	after = {
		if = {
			limit = {
				scope:discovered_spy = {
					is_alive = yes
				}
			}
			scope:discovered_spy = {
				remove_character_flag = flipped
				add_character_flag = spy_was_discovered
			}
		}
	}
}

# Inform employer about discovered spy, remove from list
agot_spy_network.0600 = {
	type = character_event
	title = agot_spy_network.0600.t

	desc = {
		desc = agot_spy_network.0600.desc
		triggered_desc = {
			trigger = {
				scope:discovered_spy = {
					has_character_flag = flipped
				}
			}
			desc = agot_spy_network.0600.flipped.desc
		}
	}

	theme = intrigue

	left_portrait = {
		character = scope:discovered_spy
		animation = worry
	}

	immediate = {
		remove_list_variable = {
			name = spy_network_members
			target = scope:discovered_spy
		}
	}

	option = {
		name = agot_spy_network.0600.a
		if = {
			limit = {
				scope:discovered_spy = {
					has_character_flag = flipped
				}
			}
			add_opinion = {
				target = scope:discovered_spy
				modifier = distrustful
			}
		}
		ai_chance = {
			base = 100
		}
	}
}

agot_spy_network.0700 = { # inform about spy accepted
	type = character_event
	title = agot_spy_network.0700.t
	desc = agot_spy_network.0700.desc
	orphan = yes
	theme = intrigue

	left_portrait = {
		character = scope:recipient
		animation = scheme
	}

	option = {
		name = agot_spy_network.0700.a
		ai_chance = {
			base = 100
		}
	}
}

agot_spy_network.0800 = { # inform about potential new spy
	type = character_event
	title = agot_spy_network.0800.t
	desc = agot_spy_network.0800.desc
	theme = intrigue

	left_portrait = {
		character = root.cp:councillor_spymaster
		animation = scheme
	}

	right_portrait = {
		character = scope:potential_new_spy
		animation = scheme
	}

	option = {
		name = agot_spy_network.0800.a
		root = {
			# Joins your spy network tooltip
			custom_tooltip = invite_to_spy_network_event_target_added_to_network.tt
			add_prestige = -10
		}
		scope:potential_new_spy = {
			add_prestige = 20
		}
		hidden_effect = {
			root = {
				add_to_variable_list = {
					name = spy_network_members
					target = scope:potential_new_spy
				}
				set_variable = {
					name = hired_spy
					value = yes
				}
			}
		}
		ai_chance = {
			base = 100
		}
	}
	option = {
		name = agot_spy_network.0800.b
	}
	after = {
		if = {
			limit = { 
				root = {
					exists = var:hired_spy
				}
			}
			root = {
				send_interface_toast = {
					type = event_toast_effect_good
					title = invite_to_spy_network_toast_title
					left_icon = root
					right_icon = scope:potential_new_spy
					custom_tooltip = invite_to_spy_network_event_toast_desc
				}
				remove_variable = hired_spy
			}
		}
	}
}