﻿##########################
# Scheme Scripted Effects
##########################

##################################################
# General Scheme Effects

try_to_force_assign_character_to_random_agent_slot_effect = {
	if = {
		limit = {
			$CHAR$ = { is_valid_as_agent_in_any_slot = $SCHEME$ }
		}
		force_assign_character_to_random_agent_slot_effect = {
			SCHEME = $SCHEME$
			CHAR = $CHAR$
			YEARS = $YEARS$
		}
	}
}

force_assign_character_to_random_agent_slot_effect = {
	$SCHEME$ = {
		random_scheme_agent_slot = {
			limit = {
				is_filled = no
				save_temporary_scope_as = slot_temp
				$CHAR$ = { is_valid_as_agent_in_slot = scope:slot_temp }
			}
			save_scope_as = valid_slot
		}
	}
	$CHAR$ = {
		force_add_to_agent_slot = {
			agent_slot = scope:valid_slot
			years = $YEARS$
		}
	}
}

increment_breaches_with_message_effect = {
	scope:owner = {
		send_interface_toast = {
			type = msg_scheme_breached
			title = feed_message.t.scheme_breached
			left_icon = scope:target
			scope:scheme = { add_scheme_breach = 1 }
			play_sound_effect = "event:/DLC/EP3/SFX/Stingers/Scheme_Rework/ep3_mx_sting_schemerework_scheme_suffering_breaches"
		}
	}
}

##################################################
# Ending Effects

# What percentage chance is there that a scheme will be discovered per month?
## tl;dr = generally, 10% of 100 - secrecy rating. So if you have 60% secrecy, that's a 4% chance per month.
hostile_scheme_monthly_discovery_chance_effect = {
	# If we're in the first X months of a scheme, give a grace period.
	if = {
		limit = {
			has_variable = secrecy_grace_period
			var:secrecy_grace_period >= 1
		}
		change_variable = {
			name = secrecy_grace_period
			add = -1
		}
	}
	# Otherwise we want to start checking for discovery.
	else_if = {
		# Without a spymaster, you can't discover schemes.
		## This isn't tooltipped for the person doing the scheming: communicating it (and when it turns on, and when it turns off) would be erratic and spammy, so we just let them think they're getting nice'n'lucky.
		limit = {
			scope:scheme = {
				# Character
				trigger_if = {
					limit = { exists = scheme_target_character.host }
					scheme_target_character.host = { save_temporary_scope_as = breach_host_temp }
				}
				# Title
				trigger_else_if = {
					limit = { exists = scheme_target_title.holder }
					scheme_target_title.holder = { save_temporary_scope_as = breach_host_temp }
				}
				# Fallback
				trigger_else = { always = no }
				scope:breach_host_temp ?= {
					# Second for Adventurers
					trigger_if = { 
						limit = { has_government = landless_adventurer_government }
						court_position:second_camp_officer ?= { save_temporary_scope_as = breach_maker_temp }
					}
					# Spymaster for everyone else
					trigger_else = {
						cp:councillor_spymaster ?= { save_temporary_scope_as = breach_maker_temp }
					}
				}
			}
		}	
		# Sort scopes.
		## Vs. titles.
		if = {
			limit = { exists = scope:target.holder }
			scope:target.holder = { save_scope_as = target }
		}
		## Vs. characters.
		else = {
			scope:target = { save_scope_as = target }
		}
		## Nab the spymaster too.
		scope:breach_maker_temp = { save_scope_as = spymaster }
		# Alright, now we roll for discovery.
		# Save chance for simple debugging
		save_scope_value_as = {
			name = discovery_chance
			value = monthly_scheme_discovery_chance_value
		}
		## ... if scope:target lives at scope:owner's court.
		if = {
			limit = {
				scope:breach_host_temp = scope:owner
				scope:owner != scope:target
				NOT = { exists = scope:scheme.var:had_self_court_discovery }
			}
			random = {
				chance = scope:discovery_chance
				# Either increment breaches.
				if = {
					limit = { scheme_breaches >= scheme_breaches_about_to_hit_limit_value }
					increment_breaches_with_message_effect = yes
				}
				# Or expose us generally.
				else = {
					add_scheme_breach = 1
					scope:owner = { play_sound_effect = "event:/DLC/EP3/SFX/Stingers/Scheme_Rework/ep3_mx_sting_schemerework_scheme_suffering_breaches" }
					set_variable = {
						name = had_self_court_discovery
						value = yes
						years = 3
					}
					scope:owner = {
						if = {
							limit = {
								scope:scheme = { is_savable_murder_scheme_trigger = yes }
							}
							trigger_event = hostile_scheme_discovery.4002
						}
						else = { trigger_event = hostile_scheme_discovery.4001 }
					}
					# Flag that we're discovering something so that on-going events don't fire.
					save_scope_value_as = {
						name = discovery_event_happening
						value = yes
					}
				}
			}
		}
		## ... otherwise they're at different courts.
		else_if = {
			limit = {
				NOR = {
					# You won't expose your own Scheme
					scope:owner = scope:target
					# Spymaster won't expose their own Scheme
					scope:owner = scope:spymaster
					# Spymaster won't expose *your* (liege's) Scheme
					scope:owner = scope:spymaster.liege
					# Spymaster won't expose a scheme if they are an agent of it
					## Secrecy is still relevant, you can still be discovered, just not on the monthly tick.
					scheme_is_character_agent = scope:spymaster
				}
			}
			# Roll to see whether we discover something.
			random = {
				chance = scope:discovery_chance
				# If the scheme isn't exposed, then we do that first.
				if = {
					limit = { is_scheme_exposed = no }
					# Increment our breaches.
					increment_breaches_with_message_effect = yes
					# Fire off an actual warning event.
					scope:target.host ?= { trigger_event = hostile_scheme_discovery.2001 }
					# Flag that we're discovering something so that on-going events don't fire.
					save_scope_value_as = {
						name = discovery_event_happening
						value = yes
					}
				}
				# Else, that means we've hit the limit for the scheme, so we discover and destroy it.
				else_if = {
					limit = { scheme_breaches >= scheme_breaches_about_to_hit_limit_value }
					# Don't forget to increment breaches to max.
					add_scheme_breach = 1
					scope:owner = { play_sound_effect = "event:/DLC/EP3/SFX/Stingers/Scheme_Rework/ep3_mx_sting_schemerework_scheme_suffering_breaches" }
					# Fire off the correct event.
					scope:target.host ?= { trigger_event = hostile_scheme_discovery.1002 }
					# Flag that we're discovering something so that on-going events don't fire.
					save_scope_value_as = {
						name = discovery_event_happening
						value = yes
					}
				}
				# Otherwise, we want to discover an agent.
				else = {
					# Increment our breaches.
					increment_breaches_with_message_effect = yes
					# And reveal an agent, if we can.
					if = {
						limit = {
							any_scheme_agent_character = {
								is_alive = yes
								agent_valid_to_be_discovered_by_spymaster = yes
							}
						}
						ordered_scheme_agent_character = {
							limit = {
								is_alive = yes
								agent_valid_to_be_discovered_by_spymaster = yes
							}
							# Get the least stealthy agent.
							order_by = {
								value = 100
								subtract = intrigue
							}
							save_scope_as = agent
						}
						# If we have a candidate, reveal them.
						scope:target.host ?= { trigger_event = hostile_scheme_discovery.1001 }
						# Flag that we're discovering something so that on-going events don't fire.
						save_scope_value_as = {
							name = discovery_event_happening
							value = yes
						}
					}
				}
			}
		}
	}
}

# Sort the ending for a scheme.
generic_scheme_process_ending_effect = {
	# Grab our scopes.
	save_scope_as = scheme
	scheme_owner = { save_scope_as = owner }
	## Targets.
	scheme_target_character ?= { save_scope_as = target }
	scheme_target_culture ?= { save_scope_as = target }
	scheme_target_faith ?= { save_scope_as = target }
	scheme_target_title ?= { save_scope_as = target }
	# Success roll.
	random = {
		chance = scheme_success_chance
		custom_tooltip = $RESULTS_TOOLTIP$
		save_scope_value_as = {
			name = scheme_successful
			value = yes
		}
		# Interception saves.
		## Unique saves roll.
		### E.g., your dog flings itself in front of an assassin for you.
		if = {
			limit = { is_savable_murder_scheme_trigger = yes }
			# We use a scripted effect so that mods can overwrite it without overwriting the whole block.
			scheme_unique_interception_roll_effect = yes
		}
		## Repeatable saves roll.
		### E.g., your bodyguard flings itself in front of an assassin for you.
		if = {
			limit = { is_savable_murder_scheme_trigger = yes }
			random = {
				chance = scope:target.scheme_intercept_repeatable_chance_total_value
				save_scope_value_as = {
					name = interception_repeatable
					value = yes
				}
			}
		}
	}
	# Secrecy roll.
	## We check this after an interception so that, if a successful scheme is intercepted, we can boost its success a little to compensate.
	if = {
		limit = { is_type_secret = yes }
		## First, determine our secrecy value.
		save_scope_value_as = {
			name = discovery_chance
			value = {
				value = 100
				subtract = scheme_secrecy
				# Boost this up a bit if the scheme was intercepted.
				if = {
					limit = {
						OR = {
							exists = scope:interception_unique
							exists = scope:interception_repeatable
						}
					}
					add = -30
				}
				# And make sure there's always _some_ risk.
				min = 5
			}
		}
		random = {
			chance = scope:discovery_chance
			custom_tooltip = scheme_remain_secret_roll_tt
			save_scope_value_as = {
				name = scheme_discovered
				value = yes
			}
			# Grab an exposer.
			if = {
				limit = { exists = scope:target.host }
				scope:target.host = { save_scope_as = murder_exposer }
			}
			else = {
				scope:target = { save_scope_as = murder_exposer }
			}
			# Set up assorted cosmetics for murders.
			scope:owner = {
				# Portraits.
				save_scope_as = owner_to_reveal
				# Plus a flavour scope we use.
				random_memory = {
					limit = {
						has_memory_category = negative
						has_memory_participant = scope:target
						NOR = { # These read poorly
							has_memory_type = became_rivals
							has_memory_type = became_nemesis
						}
					}
					save_scope_as = bad_memory
				}
			}
		}
	}
	# Process ending on_actions.
	## Scheme intercepted by a unique flag, stopping a killing at the last moment.
	if = {
		limit = { exists = scope:interception_unique }
		scheme_owner = {
			trigger_event = { on_action = pick_unique_murder_intercept_on_action }
		}
	}
	## Scheme intercepted by a repeatable flag, stopping a killing at the last moment.
	else_if = {
		limit = { exists = scope:interception_repeatable }
		scheme_owner = {
			trigger_event = { on_action = pick_repeatable_murder_intercept_on_action }
		}
	}
	## Scheme successful.
	else_if = {
		limit = { exists = scope:scheme_successful }
		# If we have a contract conclusion event to fire, fire it.
		if = {
			limit = { exists = scope:contract_end_success }
			scheme_owner = {
				trigger_event = {
					saved_event_id = scope:contract_end_success
					delayed = yes
				}
			}
		}
		task_contract ?= { complete_task_contract = success_standard }
		trigger_event = { $SUCCESS_EVENT_TYPE$ = $SUCCESS_EVENT_ID$ }
		scope:owner = { 
			play_sound_effect = "event:/DLC/EP3/SFX/Stingers/Scheme_Rework/ep3_mx_sting_schemerework_positive"
			mandala_trickster_increment_successful_schemes_effect = yes
		}		
	}
	## Scheme failed.
	else = {
		# If we have a contract conclusion event to fire, fire it.
		if = {
			limit = { exists = scope:contract_end_failure }
			scheme_owner = {
				trigger_event = {
					saved_event_id = scope:contract_end_failure
					delayed = yes
				}
			}
		}
		task_contract ?= { complete_task_contract = failure_standard }
		trigger_event = { $FAILURE_EVENT_TYPE$ = $FAILURE_EVENT_ID$ }
		scope:owner = { play_sound_effect = "event:/DLC/EP3/SFX/Stingers/Scheme_Rework/ep3_mx_sting_schemerework_negative" }
	}
}

# Roll to see if a one-off factor stops an otherwise-successful murder scheme.
scheme_unique_interception_roll_effect = {
	scope:target = {
		# These are ordered highest % to lowest %: remember to adjust their position in the list if you adjust their percentage likelihood.
		## 50% — Saved by soulmate's sacrifice (boosted).
		if = {
			limit = {
				has_perk = mortal_adoration_perk
				any_relation = {
					type = soulmate
					available_lover_to_sacrifice_in_murder_trigger = { TARGET = scope:target }
				}
			}
			random = {
				chance = 50
				save_scope_value_as = {
					name = interception_unique
					value = flag:sacrifice_lover
				}
			}
		}
		## 45% — Family Connections dynasty legacy.
		else_if = {
			limit = {
				dynasty ?= { has_dynasty_perk = guile_legacy_5 }
				NOT = { has_character_flag = guile_legacy_5_save_used }
			}
			random = {
				chance = 45
				save_scope_value_as = {
					name = interception_unique
					value = flag:family_connections_dynleg
				}
			}
		}
		## 30% — Saved by lover's sacrifice (boosted).
		else_if = {
			limit = {
				has_perk = mortal_adoration_perk
				any_relation = {
					type = lover
					available_lover_to_sacrifice_in_murder_trigger = { TARGET = scope:target }
				}
			}
			random = {
				chance = 30
				save_scope_value_as = {
					name = interception_unique
					value = flag:sacrifice_lover
				}
			}
		}
		## 20% — Target's warhorse saves them from hired thugs
		else_if = {
			limit = { owns_story_of_type = story_cycle_martial_lifestyle_warhorse }
			random = {
				chance = 20
				save_scope_value_as = {
					name = interception_unique
					value = flag:sacrifice_warhorse
				}
			}
		}
		## 20% — Saved by prison pet.
		else_if = {
			limit = {
				is_imprisoned = yes
				has_variable = prison_pet_variable
			}
			random = {
				chance = 20
				save_scope_value_as = {
					name = interception_unique
					value = flag:sacrifice_pet_prison
				}
			}
		}
		## 20% — Saved by soulmate's sacrifice (regular).
		else_if = {
			limit = {
				any_relation = {
					type = soulmate
					available_lover_to_sacrifice_in_murder_trigger = { TARGET = scope:target }
				}
			}
			random = {
				chance = 20
				save_scope_value_as = {
					name = interception_unique
					value = flag:sacrifice_lover
				}
			}
		}
		## 10% — Saved by lover's sacrifice (regular).
		else_if = {
			limit = {
				any_relation = {
					type = lover
					available_lover_to_sacrifice_in_murder_trigger = { TARGET = scope:target }
				}
			}
			random = {
				chance = 10
				save_scope_value_as = {
					name = interception_unique
					value = flag:sacrifice_lover
				}
			}
		}
		## 06% — Saved by cat.
		### Man's _true_ best friend.
		else_if = {
			limit = {
				any_owned_story = { type = story_cycle_pet_cat }
			}
			random = {
				chance = 6
				save_scope_value_as = {
					name = interception_unique
					value = flag:sacrifice_cat
				}
			}
		}
		## 05% — Saved by dog.
		else_if = {
			limit = {
				any_owned_story = { type = story_cycle_pet_dog }
			}
			random = {
				chance = 5
				save_scope_value_as = {
					name = interception_unique
					value = flag:sacrifice_dog
				}
			}
		}
		## 03% — Saved by due to bilinguality.
		else_if = {
			limit = {
				knows_language_of_culture = scope:owner.culture
				NOR = {
					culture = { has_same_culture_language = scope:owner.culture }
					AND = {
						has_variable_list = bilingual_murder_saves
						is_target_in_variable_list = {
							name = bilingual_murder_saves
							target = scope:owner.culture
						}
					}
				}
			}
			random = {
				chance = 3
				save_scope_value_as = {
					name = interception_unique
					value = flag:knowledge_bilingual
				}
			}
		}
		## 01% — Saved due to mindbreak character.
		else_if = {
			limit = {
				has_variable = mind_broken_victim
				var:mind_broken_victim = {
					is_alive = yes
					NOT = { has_trait = incapable }
				}
			}
			random = {
				chance = 1
				save_scope_value_as = {
					name = interception_unique
					value = flag:sacrifice_mindbreak
				}
			}
		}
		## 00.5% — Saved by having an artefact.
		### Special ridiculously low chance because otherwise this event, which has fun loc, will give _every_ character in the title a 1% chance to nullify any scheme against them.
		else_if = {
			limit = {
				is_available_healthy_adult = yes
				# Gotta be on land.
				exists = location.barony
				# And have a suitable artefact.
				## Which they probably will.
				### Statistically almost always, in fact.
				has_any_artifact = yes
				any_character_artifact = {
					NOT = {  has_variable = saved_from_assassination }
				}
			}
			# Don't tell anyone this is even a possibility, as otherwise it's gonna look weird in the tooltips.
			hidden_effect = {
				random = {
					chance = 1
					# And then reduce the chance even further.
					random = {
						chance = 50
						save_scope_value_as = {
							name = interception_unique
							value = flag:sacrifice_artefact
						}
					}
				}
			}
		}
	}
}

# Reset a scoped scheme, including nixing any modifiers we don't want it to keep.
reset_failed_scheme_effect = {
	reset_scheme_progress = yes
	if = {
		limit = {
			has_scheme_modifier = scheme_end_buff_t2_modifier
		}
		remove_scheme_modifier = scheme_end_buff_t2_modifier
	}
	if = {
		limit = {
			has_scheme_modifier = scheme_end_buff_t3_modifier
		}
		remove_scheme_modifier = scheme_end_buff_t3_modifier
	}
	if = {
		limit = {
			has_scheme_modifier = scheme_end_buff_t4_modifier
		}
		remove_scheme_modifier = scheme_end_buff_t4_modifier
	}
}

##################################################
# General Critical Moment Effects

# Sets up which agents are valid to be added to this scheme, then picks which two to suggest.
## We make a bazillion variants here because it's the easiest solution without having to have a dozen+ empty parameters in a single effect.
roll_critical_moment_options_02_agent_types_effect = {
	save_scope_as = scheme
	scope:scheme.task_contract ?= { save_scope_as = task_contract }
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:$OUTPUT_EVENT$
	}
	if = {
		limit = {
			any_scheme_agent_slot = { count <= character_max_scheme_agents_value }
			scope:scheme = {
				NOR = {
					has_variable = choice_a
					has_variable = choice_b
				}
			}
		}
		# First, let's determine which types we're using and which we ain't.
		## Agent type 01.
		save_scope_value_as = {
			name = agent_type_01
			value = flag:$AGENT_TYPE_01$
		}
		## Agent type 02.
		save_scope_value_as = {
			name = agent_type_02
			value = flag:$AGENT_TYPE_02$
		}
		# Then we roll for who's getting picked.
		## For var:choice_a.
		random_list = {
			# Agent type 01.
			0 = {
				trigger = {
					NOT = { scope:agent_type_01 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_01$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_01$
				}
				modifier = {
					add = $AGENT_TYPE_01_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_01$ }
				}
			}
			# Agent type 02.
			0 = {
				trigger = {
					NOT = { scope:agent_type_02 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_02$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_02$
				}
				modifier = {
					add = $AGENT_TYPE_02_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_02$ }
				}
			}
		}
		## And var:choice_b.
		random_list = {
			# Agent type 01.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_01 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_01$
					}
					scheme_owner = { can_have_$AGENT_TYPE_01$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_01$
				}
				modifier = {
					add = $AGENT_TYPE_01_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_01$ }
				}
			}
			# Agent type 02.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_02 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_02$
					}
					scheme_owner = { can_have_$AGENT_TYPE_02$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_02$
				}
				modifier = {
					add = $AGENT_TYPE_02_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_02$ }
				}
			}
		}
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0001 }
	}
}
roll_critical_moment_options_03_agent_types_effect = {
	save_scope_as = scheme
	scope:scheme.task_contract ?= { save_scope_as = task_contract }
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:$OUTPUT_EVENT$
	}
	if = {
		limit = {
			any_scheme_agent_slot = { count < character_max_scheme_agents_value }
			scope:scheme = {
				NOR = {
					has_variable = choice_a
					has_variable = choice_b
				}
			}
		}
		# First, let's determine which types we're using and which we ain't.
		## Agent type 01.
		save_scope_value_as = {
			name = agent_type_01
			value = flag:$AGENT_TYPE_01$
		}
		## Agent type 02.
		save_scope_value_as = {
			name = agent_type_02
			value = flag:$AGENT_TYPE_02$
		}
		## Agent type 03.
		save_scope_value_as = {
			name = agent_type_03
			value = flag:$AGENT_TYPE_03$
		}
		# Then we roll for who's getting picked.
		## For var:choice_a.
		random_list = {
			# Agent type 01.
			0 = {
				trigger = {
					NOT = { scope:agent_type_01 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_01$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_01$
				}
				modifier = {
					add = $AGENT_TYPE_01_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_01$ }
				}
			}
			# Agent type 02.
			0 = {
				trigger = {
					NOT = { scope:agent_type_02 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_02$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_02$
				}
				modifier = {
					add = $AGENT_TYPE_02_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_02$ }
				}
			}
			# Agent type 03.
			0 = {
				trigger = {
					NOT = { scope:agent_type_03 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_03$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_03$
				}
				modifier = {
					add = $AGENT_TYPE_03_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_03$ }
				}
			}
		}
		## And var:choice_b.
		random_list = {
			# Agent type 01.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_01 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_01$
					}
					scheme_owner = { can_have_$AGENT_TYPE_01$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_01$
				}
				modifier = {
					add = $AGENT_TYPE_01_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_01$ }
				}
			}
			# Agent type 02.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_02 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_02$
					}
					scheme_owner = { can_have_$AGENT_TYPE_02$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_02$
				}
				modifier = {
					add = $AGENT_TYPE_02_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_02$ }
				}
			}
			# Agent type 03.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_03 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_03$
					}
					scheme_owner = { can_have_$AGENT_TYPE_03$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_03$
				}
				modifier = {
					add = $AGENT_TYPE_03_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_03$ }
				}
			}
		}
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0001 }
	}
}
roll_critical_moment_options_04_agent_types_effect = {
	save_scope_as = scheme
	scope:scheme.task_contract ?= { save_scope_as = task_contract }
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:$OUTPUT_EVENT$
	}
	if = {
		limit = {
			any_scheme_agent_slot = { count < character_max_scheme_agents_value }
			scope:scheme = {
				NOR = {
					has_variable = choice_a
					has_variable = choice_b
				}
			}
		}
		# First, let's determine which types we're using and which we ain't.
		## Agent type 01.
		save_scope_value_as = {
			name = agent_type_01
			value = flag:$AGENT_TYPE_01$
		}
		## Agent type 02.
		save_scope_value_as = {
			name = agent_type_02
			value = flag:$AGENT_TYPE_02$
		}
		## Agent type 03.
		save_scope_value_as = {
			name = agent_type_03
			value = flag:$AGENT_TYPE_03$
		}
		## Agent type 04.
		save_scope_value_as = {
			name = agent_type_04
			value = flag:$AGENT_TYPE_04$
		}
		# Then we roll for who's getting picked.
		## For var:choice_a.
		random_list = {
			# Agent type 01.
			0 = {
				trigger = {
					NOT = { scope:agent_type_01 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_01$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_01$
				}
				modifier = {
					add = $AGENT_TYPE_01_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_01$ }
				}
			}
			# Agent type 02.
			0 = {
				trigger = {
					NOT = { scope:agent_type_02 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_02$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_02$
				}
				modifier = {
					add = $AGENT_TYPE_02_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_02$ }
				}
			}
			# Agent type 03.
			0 = {
				trigger = {
					NOT = { scope:agent_type_03 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_03$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_03$
				}
				modifier = {
					add = $AGENT_TYPE_03_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_03$ }
				}
			}
			# Agent type 04.
			0 = {
				trigger = {
					NOT = { scope:agent_type_04 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_04$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_04$
				}
				modifier = {
					add = $AGENT_TYPE_04_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_04$ }
				}
			}
		}
		## And var:choice_b.
		random_list = {
			# Agent type 01.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_01 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_01$
					}
					scheme_owner = { can_have_$AGENT_TYPE_01$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_01$
				}
				modifier = {
					add = $AGENT_TYPE_01_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_01$ }
				}
			}
			# Agent type 02.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_02 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_02$
					}
					scheme_owner = { can_have_$AGENT_TYPE_02$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_02$
				}
				modifier = {
					add = $AGENT_TYPE_02_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_02$ }
				}
			}
			# Agent type 03.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_03 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_03$
					}
					scheme_owner = { can_have_$AGENT_TYPE_03$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_03$
				}
				modifier = {
					add = $AGENT_TYPE_03_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_03$ }
				}
			}
			# Agent type 04.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_04 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_04$
					}
					scheme_owner = { can_have_$AGENT_TYPE_04$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_04$
				}
				modifier = {
					add = $AGENT_TYPE_04_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_04$ }
				}
			}
		}
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0001 }
	}
}
roll_critical_moment_options_05_agent_types_effect = {
	save_scope_as = scheme
	scope:scheme.task_contract ?= { save_scope_as = task_contract }
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:$OUTPUT_EVENT$
	}
	if = {
		limit = {
			any_scheme_agent_slot = { count < character_max_scheme_agents_value }
			scope:scheme = {
				NOR = {
					has_variable = choice_a
					has_variable = choice_b
				}
			}
		}
		# First, let's determine which types we're using and which we ain't.
		## Agent type 01.
		save_scope_value_as = {
			name = agent_type_01
			value = flag:$AGENT_TYPE_01$
		}
		## Agent type 02.
		save_scope_value_as = {
			name = agent_type_02
			value = flag:$AGENT_TYPE_02$
		}
		## Agent type 03.
		save_scope_value_as = {
			name = agent_type_03
			value = flag:$AGENT_TYPE_03$
		}
		## Agent type 04.
		save_scope_value_as = {
			name = agent_type_04
			value = flag:$AGENT_TYPE_04$
		}
		## Agent type 05.
		save_scope_value_as = {
			name = agent_type_05
			value = flag:$AGENT_TYPE_05$
		}
		# Then we roll for who's getting picked.
		## For var:choice_a.
		random_list = {
			# Agent type 01.
			0 = {
				trigger = {
					NOT = { scope:agent_type_01 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_01$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_01$
				}
				modifier = {
					add = $AGENT_TYPE_01_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_01$ }
				}
			}
			# Agent type 02.
			0 = {
				trigger = {
					NOT = { scope:agent_type_02 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_02$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_02$
				}
				modifier = {
					add = $AGENT_TYPE_02_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_02$ }
				}
			}
			# Agent type 03.
			0 = {
				trigger = {
					NOT = { scope:agent_type_03 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_03$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_03$
				}
				modifier = {
					add = $AGENT_TYPE_03_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_03$ }
				}
			}
			# Agent type 04.
			0 = {
				trigger = {
					NOT = { scope:agent_type_04 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_04$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_04$
				}
				modifier = {
					add = $AGENT_TYPE_04_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_04$ }
				}
			}
			# Agent type 05.
			0 = {
				trigger = {
					NOT = { scope:agent_type_05 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_05$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_05$
				}
				modifier = {
					add = $AGENT_TYPE_05_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_05$ }
				}
			}
		}
		## And var:choice_b.
		random_list = {
			# Agent type 01.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_01 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_01$
					}
					scheme_owner = { can_have_$AGENT_TYPE_01$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_01$
				}
				modifier = {
					add = $AGENT_TYPE_01_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_01$ }
				}
			}
			# Agent type 02.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_02 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_02$
					}
					scheme_owner = { can_have_$AGENT_TYPE_02$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_02$
				}
				modifier = {
					add = $AGENT_TYPE_02_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_02$ }
				}
			}
			# Agent type 03.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_03 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_03$
					}
					scheme_owner = { can_have_$AGENT_TYPE_03$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_03$
				}
				modifier = {
					add = $AGENT_TYPE_03_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_03$ }
				}
			}
			# Agent type 04.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_04 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_04$
					}
					scheme_owner = { can_have_$AGENT_TYPE_04$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_04$
				}
				modifier = {
					add = $AGENT_TYPE_04_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_04$ }
				}
			}
			# Agent type 05.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_05 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_05$
					}
					scheme_owner = { can_have_$AGENT_TYPE_05$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_05$
				}
				modifier = {
					add = $AGENT_TYPE_05_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_05$ }
				}
			}
		}
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0001 }
	}
}
roll_critical_moment_options_06_agent_types_effect = {
	save_scope_as = scheme
	scope:scheme.task_contract ?= { save_scope_as = task_contract }
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:$OUTPUT_EVENT$
	}
	if = {
		limit = {
			any_scheme_agent_slot = { count < character_max_scheme_agents_value }
			scope:scheme = {
				NOR = {
					has_variable = choice_a
					has_variable = choice_b
				}
			}
		}
		# First, let's determine which types we're using and which we ain't.
		## Agent type 01.
		save_scope_value_as = {
			name = agent_type_01
			value = flag:$AGENT_TYPE_01$
		}
		## Agent type 02.
		save_scope_value_as = {
			name = agent_type_02
			value = flag:$AGENT_TYPE_02$
		}
		## Agent type 03.
		save_scope_value_as = {
			name = agent_type_03
			value = flag:$AGENT_TYPE_03$
		}
		## Agent type 04.
		save_scope_value_as = {
			name = agent_type_04
			value = flag:$AGENT_TYPE_04$
		}
		## Agent type 05.
		save_scope_value_as = {
			name = agent_type_05
			value = flag:$AGENT_TYPE_05$
		}
		## Agent type 06.
		save_scope_value_as = {
			name = agent_type_06
			value = flag:$AGENT_TYPE_06$
		}
		# Then we roll for who's getting picked.
		## For var:choice_a.
		random_list = {
			# Agent type 01.
			0 = {
				trigger = {
					NOT = { scope:agent_type_01 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_01$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_01$
				}
				modifier = {
					add = $AGENT_TYPE_01_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_01$ }
				}
			}
			# Agent type 02.
			0 = {
				trigger = {
					NOT = { scope:agent_type_02 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_02$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_02$
				}
				modifier = {
					add = $AGENT_TYPE_02_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_02$ }
				}
			}
			# Agent type 03.
			0 = {
				trigger = {
					NOT = { scope:agent_type_03 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_03$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_03$
				}
				modifier = {
					add = $AGENT_TYPE_03_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_03$ }
				}
			}
			# Agent type 04.
			0 = {
				trigger = {
					NOT = { scope:agent_type_04 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_04$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_04$
				}
				modifier = {
					add = $AGENT_TYPE_04_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_04$ }
				}
			}
			# Agent type 05.
			0 = {
				trigger = {
					NOT = { scope:agent_type_05 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_05$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_05$
				}
				modifier = {
					add = $AGENT_TYPE_05_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_05$ }
				}
			}
			# Agent type 06.
			0 = {
				trigger = {
					NOT = { scope:agent_type_06 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_06$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_06$
				}
				modifier = {
					add = $AGENT_TYPE_06_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_06$ }
				}
			}
		}
		## And var:choice_b.
		random_list = {
			# Agent type 01.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_01 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_01$
					}
					scheme_owner = { can_have_$AGENT_TYPE_01$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_01$
				}
				modifier = {
					add = $AGENT_TYPE_01_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_01$ }
				}
			}
			# Agent type 02.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_02 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_02$
					}
					scheme_owner = { can_have_$AGENT_TYPE_02$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_02$
				}
				modifier = {
					add = $AGENT_TYPE_02_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_02$ }
				}
			}
			# Agent type 03.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_03 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_03$
					}
					scheme_owner = { can_have_$AGENT_TYPE_03$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_03$
				}
				modifier = {
					add = $AGENT_TYPE_03_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_03$ }
				}
			}
			# Agent type 04.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_04 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_04$
					}
					scheme_owner = { can_have_$AGENT_TYPE_04$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_04$
				}
				modifier = {
					add = $AGENT_TYPE_04_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_04$ }
				}
			}
			# Agent type 05.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_05 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_05$
					}
					scheme_owner = { can_have_$AGENT_TYPE_05$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_05$
				}
				modifier = {
					add = $AGENT_TYPE_05_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_05$ }
				}
			}
			# Agent type 06.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_06 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_06$
					}
					scheme_owner = { can_have_$AGENT_TYPE_06$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_06$
				}
				modifier = {
					add = $AGENT_TYPE_06_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_06$ }
				}
			}
		}
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0001 }
	}
}
roll_critical_moment_options_07_agent_types_effect = {
	save_scope_as = scheme
	scope:scheme.task_contract ?= { save_scope_as = task_contract }
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:$OUTPUT_EVENT$
	}
	if = {
		limit = {
			any_scheme_agent_slot = { count < character_max_scheme_agents_value }
			scope:scheme = {
				NOR = {
					has_variable = choice_a
					has_variable = choice_b
				}
			}
		}
		# First, let's determine which types we're using and which we ain't.
		## Agent type 01.
		save_scope_value_as = {
			name = agent_type_01
			value = flag:$AGENT_TYPE_01$
		}
		## Agent type 02.
		save_scope_value_as = {
			name = agent_type_02
			value = flag:$AGENT_TYPE_02$
		}
		## Agent type 03.
		save_scope_value_as = {
			name = agent_type_03
			value = flag:$AGENT_TYPE_03$
		}
		## Agent type 04.
		save_scope_value_as = {
			name = agent_type_04
			value = flag:$AGENT_TYPE_04$
		}
		## Agent type 05.
		save_scope_value_as = {
			name = agent_type_05
			value = flag:$AGENT_TYPE_05$
		}
		## Agent type 06.
		save_scope_value_as = {
			name = agent_type_06
			value = flag:$AGENT_TYPE_06$
		}
		## Agent type 07.
		save_scope_value_as = {
			name = agent_type_07
			value = flag:$AGENT_TYPE_07$
		}
		# Then we roll for who's getting picked.
		## For var:choice_a.
		random_list = {
			# Agent type 01.
			0 = {
				trigger = {
					NOT = { scope:agent_type_01 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_01$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_01$
				}
				modifier = {
					add = $AGENT_TYPE_01_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_01$ }
				}
			}
			# Agent type 02.
			0 = {
				trigger = {
					NOT = { scope:agent_type_02 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_02$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_02$
				}
				modifier = {
					add = $AGENT_TYPE_02_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_02$ }
				}
			}
			# Agent type 03.
			0 = {
				trigger = {
					NOT = { scope:agent_type_03 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_03$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_03$
				}
				modifier = {
					add = $AGENT_TYPE_03_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_03$ }
				}
			}
			# Agent type 04.
			0 = {
				trigger = {
					NOT = { scope:agent_type_04 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_04$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_04$
				}
				modifier = {
					add = $AGENT_TYPE_04_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_04$ }
				}
			}
			# Agent type 05.
			0 = {
				trigger = {
					NOT = { scope:agent_type_05 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_05$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_05$
				}
				modifier = {
					add = $AGENT_TYPE_05_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_05$ }
				}
			}
			# Agent type 06.
			0 = {
				trigger = {
					NOT = { scope:agent_type_06 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_06$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_06$
				}
				modifier = {
					add = $AGENT_TYPE_06_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_06$ }
				}
			}
			# Agent type 07.
			0 = {
				trigger = {
					NOT = { scope:agent_type_07 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_07$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_07$
				}
				modifier = {
					add = $AGENT_TYPE_07_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_07$ }
				}
			}
		}
		## And var:choice_b.
		random_list = {
			# Agent type 01.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_01 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_01$
					}
					scheme_owner = { can_have_$AGENT_TYPE_01$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_01$
				}
				modifier = {
					add = $AGENT_TYPE_01_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_01$ }
				}
			}
			# Agent type 02.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_02 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_02$
					}
					scheme_owner = { can_have_$AGENT_TYPE_02$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_02$
				}
				modifier = {
					add = $AGENT_TYPE_02_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_02$ }
				}
			}
			# Agent type 03.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_03 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_03$
					}
					scheme_owner = { can_have_$AGENT_TYPE_03$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_03$
				}
				modifier = {
					add = $AGENT_TYPE_03_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_03$ }
				}
			}
			# Agent type 04.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_04 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_04$
					}
					scheme_owner = { can_have_$AGENT_TYPE_04$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_04$
				}
				modifier = {
					add = $AGENT_TYPE_04_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_04$ }
				}
			}
			# Agent type 05.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_05 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_05$
					}
					scheme_owner = { can_have_$AGENT_TYPE_05$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_05$
				}
				modifier = {
					add = $AGENT_TYPE_05_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_05$ }
				}
			}
			# Agent type 06.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_06 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_06$
					}
					scheme_owner = { can_have_$AGENT_TYPE_06$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_06$
				}
				modifier = {
					add = $AGENT_TYPE_06_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_06$ }
				}
			}
			# Agent type 07.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_07 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_07$
					}
					scheme_owner = { can_have_$AGENT_TYPE_07$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_07$
				}
				modifier = {
					add = $AGENT_TYPE_07_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_07$ }
				}
			}
		}
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0001 }
	}
}
roll_critical_moment_options_08_agent_types_effect = {
	save_scope_as = scheme
	scope:scheme.task_contract ?= { save_scope_as = task_contract }
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:$OUTPUT_EVENT$
	}
	if = {
		limit = {
			any_scheme_agent_slot = { count < character_max_scheme_agents_value }
			scope:scheme = {
				NOR = {
					has_variable = choice_a
					has_variable = choice_b
				}
			}
		}
		# First, let's determine which types we're using and which we ain't.
		## Agent type 01.
		save_scope_value_as = {
			name = agent_type_01
			value = flag:$AGENT_TYPE_01$
		}
		## Agent type 02.
		save_scope_value_as = {
			name = agent_type_02
			value = flag:$AGENT_TYPE_02$
		}
		## Agent type 03.
		save_scope_value_as = {
			name = agent_type_03
			value = flag:$AGENT_TYPE_03$
		}
		## Agent type 04.
		save_scope_value_as = {
			name = agent_type_04
			value = flag:$AGENT_TYPE_04$
		}
		## Agent type 05.
		save_scope_value_as = {
			name = agent_type_05
			value = flag:$AGENT_TYPE_05$
		}
		## Agent type 06.
		save_scope_value_as = {
			name = agent_type_06
			value = flag:$AGENT_TYPE_06$
		}
		## Agent type 07.
		save_scope_value_as = {
			name = agent_type_07
			value = flag:$AGENT_TYPE_07$
		}
		## Agent type 08.
		save_scope_value_as = {
			name = agent_type_08
			value = flag:$AGENT_TYPE_08$
		}
		# Then we roll for who's getting picked.
		## For var:choice_a.
		random_list = {
			# Agent type 01.
			0 = {
				trigger = {
					NOT = { scope:agent_type_01 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_01$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_01$
				}
				modifier = {
					add = $AGENT_TYPE_01_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_01$ }
				}
			}
			# Agent type 02.
			0 = {
				trigger = {
					NOT = { scope:agent_type_02 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_02$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_02$
				}
				modifier = {
					add = $AGENT_TYPE_02_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_02$ }
				}
			}
			# Agent type 03.
			0 = {
				trigger = {
					NOT = { scope:agent_type_03 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_03$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_03$
				}
				modifier = {
					add = $AGENT_TYPE_03_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_03$ }
				}
			}
			# Agent type 04.
			0 = {
				trigger = {
					NOT = { scope:agent_type_04 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_04$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_04$
				}
				modifier = {
					add = $AGENT_TYPE_04_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_04$ }
				}
			}
			# Agent type 05.
			0 = {
				trigger = {
					NOT = { scope:agent_type_05 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_05$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_05$
				}
				modifier = {
					add = $AGENT_TYPE_05_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_05$ }
				}
			}
			# Agent type 06.
			0 = {
				trigger = {
					NOT = { scope:agent_type_06 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_06$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_06$
				}
				modifier = {
					add = $AGENT_TYPE_06_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_06$ }
				}
			}
			# Agent type 07.
			0 = {
				trigger = {
					NOT = { scope:agent_type_07 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_07$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_07$
				}
				modifier = {
					add = $AGENT_TYPE_07_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_07$ }
				}
			}
			# Agent type 08.
			0 = {
				trigger = {
					NOT = { scope:agent_type_08 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_08$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_08$
				}
				modifier = {
					add = $AGENT_TYPE_08_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_08$ }
				}
			}
		}
		## And var:choice_b.
		random_list = {
			# Agent type 01.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_01 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_01$
					}
					scheme_owner = { can_have_$AGENT_TYPE_01$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_01$
				}
				modifier = {
					add = $AGENT_TYPE_01_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_01$ }
				}
			}
			# Agent type 02.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_02 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_02$
					}
					scheme_owner = { can_have_$AGENT_TYPE_02$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_02$
				}
				modifier = {
					add = $AGENT_TYPE_02_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_02$ }
				}
			}
			# Agent type 03.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_03 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_03$
					}
					scheme_owner = { can_have_$AGENT_TYPE_03$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_03$
				}
				modifier = {
					add = $AGENT_TYPE_03_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_03$ }
				}
			}
			# Agent type 04.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_04 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_04$
					}
					scheme_owner = { can_have_$AGENT_TYPE_04$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_04$
				}
				modifier = {
					add = $AGENT_TYPE_04_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_04$ }
				}
			}
			# Agent type 05.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_05 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_05$
					}
					scheme_owner = { can_have_$AGENT_TYPE_05$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_05$
				}
				modifier = {
					add = $AGENT_TYPE_05_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_05$ }
				}
			}
			# Agent type 06.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_06 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_06$
					}
					scheme_owner = { can_have_$AGENT_TYPE_06$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_06$
				}
				modifier = {
					add = $AGENT_TYPE_06_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_06$ }
				}
			}
			# Agent type 07.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_07 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_07$
					}
					scheme_owner = { can_have_$AGENT_TYPE_07$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_07$
				}
				modifier = {
					add = $AGENT_TYPE_07_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_07$ }
				}
			}
			# Agent type 08.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_08 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_08$
					}
					scheme_owner = { can_have_$AGENT_TYPE_08$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_08$
				}
				modifier = {
					add = $AGENT_TYPE_08_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_08$ }
				}
			}
		}
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0001 }
	}
}
roll_critical_moment_options_09_agent_types_effect = {
	save_scope_as = scheme
	scope:scheme.task_contract ?= { save_scope_as = task_contract }
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:$OUTPUT_EVENT$
	}
	if = {
		limit = {
			any_scheme_agent_slot = { count < character_max_scheme_agents_value }
			scope:scheme = {
				NOR = {
					has_variable = choice_a
					has_variable = choice_b
				}
			}
		}
		# First, let's determine which types we're using and which we ain't.
		## Agent type 01.
		save_scope_value_as = {
			name = agent_type_01
			value = flag:$AGENT_TYPE_01$
		}
		## Agent type 02.
		save_scope_value_as = {
			name = agent_type_02
			value = flag:$AGENT_TYPE_02$
		}
		## Agent type 03.
		save_scope_value_as = {
			name = agent_type_03
			value = flag:$AGENT_TYPE_03$
		}
		## Agent type 04.
		save_scope_value_as = {
			name = agent_type_04
			value = flag:$AGENT_TYPE_04$
		}
		## Agent type 05.
		save_scope_value_as = {
			name = agent_type_05
			value = flag:$AGENT_TYPE_05$
		}
		## Agent type 06.
		save_scope_value_as = {
			name = agent_type_06
			value = flag:$AGENT_TYPE_06$
		}
		## Agent type 07.
		save_scope_value_as = {
			name = agent_type_07
			value = flag:$AGENT_TYPE_07$
		}
		## Agent type 08.
		save_scope_value_as = {
			name = agent_type_08
			value = flag:$AGENT_TYPE_08$
		}
		## Agent type 09.
		save_scope_value_as = {
			name = agent_type_09
			value = flag:$AGENT_TYPE_09$
		}
		# Then we roll for who's getting picked.
		## For var:choice_a.
		random_list = {
			# Agent type 01.
			0 = {
				trigger = {
					NOT = { scope:agent_type_01 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_01$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_01$
				}
				modifier = {
					add = $AGENT_TYPE_01_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_01$ }
				}
			}
			# Agent type 02.
			0 = {
				trigger = {
					NOT = { scope:agent_type_02 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_02$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_02$
				}
				modifier = {
					add = $AGENT_TYPE_02_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_02$ }
				}
			}
			# Agent type 03.
			0 = {
				trigger = {
					NOT = { scope:agent_type_03 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_03$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_03$
				}
				modifier = {
					add = $AGENT_TYPE_03_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_03$ }
				}
			}
			# Agent type 04.
			0 = {
				trigger = {
					NOT = { scope:agent_type_04 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_04$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_04$
				}
				modifier = {
					add = $AGENT_TYPE_04_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_04$ }
				}
			}
			# Agent type 05.
			0 = {
				trigger = {
					NOT = { scope:agent_type_05 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_05$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_05$
				}
				modifier = {
					add = $AGENT_TYPE_05_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_05$ }
				}
			}
			# Agent type 06.
			0 = {
				trigger = {
					NOT = { scope:agent_type_06 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_06$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_06$
				}
				modifier = {
					add = $AGENT_TYPE_06_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_06$ }
				}
			}
			# Agent type 07.
			0 = {
				trigger = {
					NOT = { scope:agent_type_07 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_07$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_07$
				}
				modifier = {
					add = $AGENT_TYPE_07_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_07$ }
				}
			}
			# Agent type 08.
			0 = {
				trigger = {
					NOT = { scope:agent_type_08 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_08$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_08$
				}
				modifier = {
					add = $AGENT_TYPE_08_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_08$ }
				}
			}
			# Agent type 09.
			0 = {
				trigger = {
					NOT = { scope:agent_type_09 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_09$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_09$
				}
				modifier = {
					add = $AGENT_TYPE_09_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_09$ }
				}
			}
		}
		## And var:choice_b.
		random_list = {
			# Agent type 01.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_01 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_01$
					}
					scheme_owner = { can_have_$AGENT_TYPE_01$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_01$
				}
				modifier = {
					add = $AGENT_TYPE_01_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_01$ }
				}
			}
			# Agent type 02.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_02 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_02$
					}
					scheme_owner = { can_have_$AGENT_TYPE_02$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_02$
				}
				modifier = {
					add = $AGENT_TYPE_02_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_02$ }
				}
			}
			# Agent type 03.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_03 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_03$
					}
					scheme_owner = { can_have_$AGENT_TYPE_03$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_03$
				}
				modifier = {
					add = $AGENT_TYPE_03_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_03$ }
				}
			}
			# Agent type 04.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_04 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_04$
					}
					scheme_owner = { can_have_$AGENT_TYPE_04$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_04$
				}
				modifier = {
					add = $AGENT_TYPE_04_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_04$ }
				}
			}
			# Agent type 05.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_05 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_05$
					}
					scheme_owner = { can_have_$AGENT_TYPE_05$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_05$
				}
				modifier = {
					add = $AGENT_TYPE_05_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_05$ }
				}
			}
			# Agent type 06.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_06 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_06$
					}
					scheme_owner = { can_have_$AGENT_TYPE_06$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_06$
				}
				modifier = {
					add = $AGENT_TYPE_06_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_06$ }
				}
			}
			# Agent type 07.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_07 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_07$
					}
					scheme_owner = { can_have_$AGENT_TYPE_07$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_07$
				}
				modifier = {
					add = $AGENT_TYPE_07_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_07$ }
				}
			}
			# Agent type 08.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_08 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_08$
					}
					scheme_owner = { can_have_$AGENT_TYPE_08$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_08$
				}
				modifier = {
					add = $AGENT_TYPE_08_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_08$ }
				}
			}
			# Agent type 09.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_09 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_09$
					}
					scheme_owner = { can_have_$AGENT_TYPE_09$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_09$
				}
				modifier = {
					add = $AGENT_TYPE_09_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_09$ }
				}
			}
		}
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0001 }
	}
}
roll_critical_moment_options_10_agent_types_effect = {
	save_scope_as = scheme
	scope:scheme.task_contract ?= { save_scope_as = task_contract }
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:$OUTPUT_EVENT$
	}
	if = {
		limit = {
			any_scheme_agent_slot = { count < character_max_scheme_agents_value }
			scope:scheme = {
				NOR = {
					has_variable = choice_a
					has_variable = choice_b
				}
			}
		}
		# First, let's determine which types we're using and which we ain't.
		## Agent type 01.
		save_scope_value_as = {
			name = agent_type_01
			value = flag:$AGENT_TYPE_01$
		}
		## Agent type 02.
		save_scope_value_as = {
			name = agent_type_02
			value = flag:$AGENT_TYPE_02$
		}
		## Agent type 03.
		save_scope_value_as = {
			name = agent_type_03
			value = flag:$AGENT_TYPE_03$
		}
		## Agent type 04.
		save_scope_value_as = {
			name = agent_type_04
			value = flag:$AGENT_TYPE_04$
		}
		## Agent type 05.
		save_scope_value_as = {
			name = agent_type_05
			value = flag:$AGENT_TYPE_05$
		}
		## Agent type 06.
		save_scope_value_as = {
			name = agent_type_06
			value = flag:$AGENT_TYPE_06$
		}
		## Agent type 07.
		save_scope_value_as = {
			name = agent_type_07
			value = flag:$AGENT_TYPE_07$
		}
		## Agent type 08.
		save_scope_value_as = {
			name = agent_type_08
			value = flag:$AGENT_TYPE_08$
		}
		## Agent type 09.
		save_scope_value_as = {
			name = agent_type_09
			value = flag:$AGENT_TYPE_09$
		}
		## Agent type 10.
		save_scope_value_as = {
			name = agent_type_10
			value = flag:$AGENT_TYPE_10$
		}
		# Then we roll for who's getting picked.
		## For var:choice_a.
		random_list = {
			# Agent type 01.
			0 = {
				trigger = {
					NOT = { scope:agent_type_01 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_01$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_01$
				}
				modifier = {
					add = $AGENT_TYPE_01_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_01$ }
				}
			}
			# Agent type 02.
			0 = {
				trigger = {
					NOT = { scope:agent_type_02 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_02$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_02$
				}
				modifier = {
					add = $AGENT_TYPE_02_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_02$ }
				}
			}
			# Agent type 03.
			0 = {
				trigger = {
					NOT = { scope:agent_type_03 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_03$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_03$
				}
				modifier = {
					add = $AGENT_TYPE_03_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_03$ }
				}
			}
			# Agent type 04.
			0 = {
				trigger = {
					NOT = { scope:agent_type_04 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_04$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_04$
				}
				modifier = {
					add = $AGENT_TYPE_04_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_04$ }
				}
			}
			# Agent type 05.
			0 = {
				trigger = {
					NOT = { scope:agent_type_05 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_05$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_05$
				}
				modifier = {
					add = $AGENT_TYPE_05_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_05$ }
				}
			}
			# Agent type 06.
			0 = {
				trigger = {
					NOT = { scope:agent_type_06 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_06$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_06$
				}
				modifier = {
					add = $AGENT_TYPE_06_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_06$ }
				}
			}
			# Agent type 07.
			0 = {
				trigger = {
					NOT = { scope:agent_type_07 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_07$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_07$
				}
				modifier = {
					add = $AGENT_TYPE_07_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_07$ }
				}
			}
			# Agent type 08.
			0 = {
				trigger = {
					NOT = { scope:agent_type_08 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_08$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_08$
				}
				modifier = {
					add = $AGENT_TYPE_08_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_08$ }
				}
			}
			# Agent type 09.
			0 = {
				trigger = {
					NOT = { scope:agent_type_09 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_09$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_09$
				}
				modifier = {
					add = $AGENT_TYPE_09_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_09$ }
				}
			}
			# Agent type 10.
			0 = {
				trigger = {
					NOT = { scope:agent_type_10 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_10$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_10$
				}
				modifier = {
					add = $AGENT_TYPE_10_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_10$ }
				}
			}
		}
		## And var:choice_b.
		random_list = {
			# Agent type 01.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_01 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_01$
					}
					scheme_owner = { can_have_$AGENT_TYPE_01$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_01$
				}
				modifier = {
					add = $AGENT_TYPE_01_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_01$ }
				}
			}
			# Agent type 02.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_02 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_02$
					}
					scheme_owner = { can_have_$AGENT_TYPE_02$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_02$
				}
				modifier = {
					add = $AGENT_TYPE_02_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_02$ }
				}
			}
			# Agent type 03.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_03 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_03$
					}
					scheme_owner = { can_have_$AGENT_TYPE_03$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_03$
				}
				modifier = {
					add = $AGENT_TYPE_03_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_03$ }
				}
			}
			# Agent type 04.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_04 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_04$
					}
					scheme_owner = { can_have_$AGENT_TYPE_04$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_04$
				}
				modifier = {
					add = $AGENT_TYPE_04_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_04$ }
				}
			}
			# Agent type 05.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_05 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_05$
					}
					scheme_owner = { can_have_$AGENT_TYPE_05$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_05$
				}
				modifier = {
					add = $AGENT_TYPE_05_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_05$ }
				}
			}
			# Agent type 06.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_06 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_06$
					}
					scheme_owner = { can_have_$AGENT_TYPE_06$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_06$
				}
				modifier = {
					add = $AGENT_TYPE_06_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_06$ }
				}
			}
			# Agent type 07.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_07 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_07$
					}
					scheme_owner = { can_have_$AGENT_TYPE_07$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_07$
				}
				modifier = {
					add = $AGENT_TYPE_07_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_07$ }
				}
			}
			# Agent type 08.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_08 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_08$
					}
					scheme_owner = { can_have_$AGENT_TYPE_08$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_08$
				}
				modifier = {
					add = $AGENT_TYPE_08_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_08$ }
				}
			}
			# Agent type 09.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_09 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_09$
					}
					scheme_owner = { can_have_$AGENT_TYPE_09$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_09$
				}
				modifier = {
					add = $AGENT_TYPE_09_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_09$ }
				}
			}
			# Agent type 10.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_10 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_10$
					}
					scheme_owner = { can_have_$AGENT_TYPE_10$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_10$
				}
				modifier = {
					add = $AGENT_TYPE_10_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_10$ }
				}
			}
		}
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0001 }
	}
}
roll_critical_moment_options_11_agent_types_effect = {
	save_scope_as = scheme
	scope:scheme.task_contract ?= { save_scope_as = task_contract }
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:$OUTPUT_EVENT$
	}
	if = {
		limit = {
			any_scheme_agent_slot = { count < character_max_scheme_agents_value }
			scope:scheme = {
				NOR = {
					has_variable = choice_a
					has_variable = choice_b
				}
			}
		}
		# First, let's determine which types we're using and which we ain't.
		## Agent type 01.
		save_scope_value_as = {
			name = agent_type_01
			value = flag:$AGENT_TYPE_01$
		}
		## Agent type 02.
		save_scope_value_as = {
			name = agent_type_02
			value = flag:$AGENT_TYPE_02$
		}
		## Agent type 03.
		save_scope_value_as = {
			name = agent_type_03
			value = flag:$AGENT_TYPE_03$
		}
		## Agent type 04.
		save_scope_value_as = {
			name = agent_type_04
			value = flag:$AGENT_TYPE_04$
		}
		## Agent type 05.
		save_scope_value_as = {
			name = agent_type_05
			value = flag:$AGENT_TYPE_05$
		}
		## Agent type 06.
		save_scope_value_as = {
			name = agent_type_06
			value = flag:$AGENT_TYPE_06$
		}
		## Agent type 07.
		save_scope_value_as = {
			name = agent_type_07
			value = flag:$AGENT_TYPE_07$
		}
		## Agent type 08.
		save_scope_value_as = {
			name = agent_type_08
			value = flag:$AGENT_TYPE_08$
		}
		## Agent type 09.
		save_scope_value_as = {
			name = agent_type_09
			value = flag:$AGENT_TYPE_09$
		}
		## Agent type 10.
		save_scope_value_as = {
			name = agent_type_10
			value = flag:$AGENT_TYPE_10$
		}
		## Agent type 11.
		save_scope_value_as = {
			name = agent_type_11
			value = flag:$AGENT_TYPE_11$
		}
		# Then we roll for who's getting picked.
		## For var:choice_a.
		random_list = {
			# Agent type 01.
			0 = {
				trigger = {
					NOT = { scope:agent_type_01 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_01$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_01$
				}
				modifier = {
					add = $AGENT_TYPE_01_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_01$ }
				}
			}
			# Agent type 02.
			0 = {
				trigger = {
					NOT = { scope:agent_type_02 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_02$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_02$
				}
				modifier = {
					add = $AGENT_TYPE_02_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_02$ }
				}
			}
			# Agent type 03.
			0 = {
				trigger = {
					NOT = { scope:agent_type_03 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_03$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_03$
				}
				modifier = {
					add = $AGENT_TYPE_03_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_03$ }
				}
			}
			# Agent type 04.
			0 = {
				trigger = {
					NOT = { scope:agent_type_04 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_04$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_04$
				}
				modifier = {
					add = $AGENT_TYPE_04_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_04$ }
				}
			}
			# Agent type 05.
			0 = {
				trigger = {
					NOT = { scope:agent_type_05 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_05$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_05$
				}
				modifier = {
					add = $AGENT_TYPE_05_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_05$ }
				}
			}
			# Agent type 06.
			0 = {
				trigger = {
					NOT = { scope:agent_type_06 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_06$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_06$
				}
				modifier = {
					add = $AGENT_TYPE_06_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_06$ }
				}
			}
			# Agent type 07.
			0 = {
				trigger = {
					NOT = { scope:agent_type_07 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_07$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_07$
				}
				modifier = {
					add = $AGENT_TYPE_07_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_07$ }
				}
			}
			# Agent type 08.
			0 = {
				trigger = {
					NOT = { scope:agent_type_08 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_08$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_08$
				}
				modifier = {
					add = $AGENT_TYPE_08_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_08$ }
				}
			}
			# Agent type 09.
			0 = {
				trigger = {
					NOT = { scope:agent_type_09 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_09$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_09$
				}
				modifier = {
					add = $AGENT_TYPE_09_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_09$ }
				}
			}
			# Agent type 10.
			0 = {
				trigger = {
					NOT = { scope:agent_type_10 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_10$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_10$
				}
				modifier = {
					add = $AGENT_TYPE_10_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_10$ }
				}
			}
			# Agent type 11.
			0 = {
				trigger = {
					NOT = { scope:agent_type_11 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_11$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_11$
				}
				modifier = {
					add = $AGENT_TYPE_11_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_11$ }
				}
			}
		}
		## And var:choice_b.
		random_list = {
			# Agent type 01.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_01 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_01$
					}
					scheme_owner = { can_have_$AGENT_TYPE_01$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_01$
				}
				modifier = {
					add = $AGENT_TYPE_01_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_01$ }
				}
			}
			# Agent type 02.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_02 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_02$
					}
					scheme_owner = { can_have_$AGENT_TYPE_02$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_02$
				}
				modifier = {
					add = $AGENT_TYPE_02_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_02$ }
				}
			}
			# Agent type 03.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_03 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_03$
					}
					scheme_owner = { can_have_$AGENT_TYPE_03$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_03$
				}
				modifier = {
					add = $AGENT_TYPE_03_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_03$ }
				}
			}
			# Agent type 04.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_04 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_04$
					}
					scheme_owner = { can_have_$AGENT_TYPE_04$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_04$
				}
				modifier = {
					add = $AGENT_TYPE_04_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_04$ }
				}
			}
			# Agent type 05.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_05 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_05$
					}
					scheme_owner = { can_have_$AGENT_TYPE_05$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_05$
				}
				modifier = {
					add = $AGENT_TYPE_05_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_05$ }
				}
			}
			# Agent type 06.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_06 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_06$
					}
					scheme_owner = { can_have_$AGENT_TYPE_06$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_06$
				}
				modifier = {
					add = $AGENT_TYPE_06_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_06$ }
				}
			}
			# Agent type 07.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_07 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_07$
					}
					scheme_owner = { can_have_$AGENT_TYPE_07$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_07$
				}
				modifier = {
					add = $AGENT_TYPE_07_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_07$ }
				}
			}
			# Agent type 08.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_08 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_08$
					}
					scheme_owner = { can_have_$AGENT_TYPE_08$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_08$
				}
				modifier = {
					add = $AGENT_TYPE_08_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_08$ }
				}
			}
			# Agent type 09.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_09 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_09$
					}
					scheme_owner = { can_have_$AGENT_TYPE_09$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_09$
				}
				modifier = {
					add = $AGENT_TYPE_09_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_09$ }
				}
			}
			# Agent type 10.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_10 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_10$
					}
					scheme_owner = { can_have_$AGENT_TYPE_10$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_10$
				}
				modifier = {
					add = $AGENT_TYPE_10_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_10$ }
				}
			}
			# Agent type 11.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_11 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_11$
					}
					scheme_owner = { can_have_$AGENT_TYPE_11$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_11$
				}
				modifier = {
					add = $AGENT_TYPE_11_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_11$ }
				}
			}
		}
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0001 }
	}
}
roll_critical_moment_options_12_agent_types_effect = {
	save_scope_as = scheme
	scope:scheme.task_contract ?= { save_scope_as = task_contract }
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:$OUTPUT_EVENT$
	}
	if = {
		limit = {
			any_scheme_agent_slot = { count < character_max_scheme_agents_value }
			scope:scheme = {
				NOR = {
					has_variable = choice_a
					has_variable = choice_b
				}
			}
		}
		# First, let's determine which types we're using and which we ain't.
		## Agent type 01.
		save_scope_value_as = {
			name = agent_type_01
			value = flag:$AGENT_TYPE_01$
		}
		## Agent type 02.
		save_scope_value_as = {
			name = agent_type_02
			value = flag:$AGENT_TYPE_02$
		}
		## Agent type 03.
		save_scope_value_as = {
			name = agent_type_03
			value = flag:$AGENT_TYPE_03$
		}
		## Agent type 04.
		save_scope_value_as = {
			name = agent_type_04
			value = flag:$AGENT_TYPE_04$
		}
		## Agent type 05.
		save_scope_value_as = {
			name = agent_type_05
			value = flag:$AGENT_TYPE_05$
		}
		## Agent type 06.
		save_scope_value_as = {
			name = agent_type_06
			value = flag:$AGENT_TYPE_06$
		}
		## Agent type 07.
		save_scope_value_as = {
			name = agent_type_07
			value = flag:$AGENT_TYPE_07$
		}
		## Agent type 08.
		save_scope_value_as = {
			name = agent_type_08
			value = flag:$AGENT_TYPE_08$
		}
		## Agent type 09.
		save_scope_value_as = {
			name = agent_type_09
			value = flag:$AGENT_TYPE_09$
		}
		## Agent type 10.
		save_scope_value_as = {
			name = agent_type_10
			value = flag:$AGENT_TYPE_10$
		}
		## Agent type 11.
		save_scope_value_as = {
			name = agent_type_11
			value = flag:$AGENT_TYPE_11$
		}
		## Agent type 12.
		save_scope_value_as = {
			name = agent_type_12
			value = flag:$AGENT_TYPE_12$
		}
		# Then we roll for who's getting picked.
		## For var:choice_a.
		random_list = {
			# Agent type 01.
			0 = {
				trigger = {
					NOT = { scope:agent_type_01 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_01$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_01$
				}
				modifier = {
					add = $AGENT_TYPE_01_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_01$ }
				}
			}
			# Agent type 02.
			0 = {
				trigger = {
					NOT = { scope:agent_type_02 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_02$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_02$
				}
				modifier = {
					add = $AGENT_TYPE_02_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_02$ }
				}
			}
			# Agent type 03.
			0 = {
				trigger = {
					NOT = { scope:agent_type_03 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_03$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_03$
				}
				modifier = {
					add = $AGENT_TYPE_03_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_03$ }
				}
			}
			# Agent type 04.
			0 = {
				trigger = {
					NOT = { scope:agent_type_04 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_04$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_04$
				}
				modifier = {
					add = $AGENT_TYPE_04_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_04$ }
				}
			}
			# Agent type 05.
			0 = {
				trigger = {
					NOT = { scope:agent_type_05 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_05$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_05$
				}
				modifier = {
					add = $AGENT_TYPE_05_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_05$ }
				}
			}
			# Agent type 06.
			0 = {
				trigger = {
					NOT = { scope:agent_type_06 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_06$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_06$
				}
				modifier = {
					add = $AGENT_TYPE_06_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_06$ }
				}
			}
			# Agent type 07.
			0 = {
				trigger = {
					NOT = { scope:agent_type_07 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_07$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_07$
				}
				modifier = {
					add = $AGENT_TYPE_07_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_07$ }
				}
			}
			# Agent type 08.
			0 = {
				trigger = {
					NOT = { scope:agent_type_08 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_08$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_08$
				}
				modifier = {
					add = $AGENT_TYPE_08_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_08$ }
				}
			}
			# Agent type 09.
			0 = {
				trigger = {
					NOT = { scope:agent_type_09 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_09$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_09$
				}
				modifier = {
					add = $AGENT_TYPE_09_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_09$ }
				}
			}
			# Agent type 10.
			0 = {
				trigger = {
					NOT = { scope:agent_type_10 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_10$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_10$
				}
				modifier = {
					add = $AGENT_TYPE_10_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_10$ }
				}
			}
			# Agent type 11.
			0 = {
				trigger = {
					NOT = { scope:agent_type_11 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_11$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_11$
				}
				modifier = {
					add = $AGENT_TYPE_11_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_11$ }
				}
			}
			# Agent type 12.
			0 = {
				trigger = {
					NOT = { scope:agent_type_12 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_12$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_12$
				}
				modifier = {
					add = $AGENT_TYPE_12_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_12$ }
				}
			}
		}
		## And var:choice_b.
		random_list = {
			# Agent type 01.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_01 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_01$
					}
					scheme_owner = { can_have_$AGENT_TYPE_01$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_01$
				}
				modifier = {
					add = $AGENT_TYPE_01_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_01$ }
				}
			}
			# Agent type 02.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_02 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_02$
					}
					scheme_owner = { can_have_$AGENT_TYPE_02$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_02$
				}
				modifier = {
					add = $AGENT_TYPE_02_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_02$ }
				}
			}
			# Agent type 03.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_03 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_03$
					}
					scheme_owner = { can_have_$AGENT_TYPE_03$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_03$
				}
				modifier = {
					add = $AGENT_TYPE_03_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_03$ }
				}
			}
			# Agent type 04.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_04 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_04$
					}
					scheme_owner = { can_have_$AGENT_TYPE_04$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_04$
				}
				modifier = {
					add = $AGENT_TYPE_04_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_04$ }
				}
			}
			# Agent type 05.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_05 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_05$
					}
					scheme_owner = { can_have_$AGENT_TYPE_05$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_05$
				}
				modifier = {
					add = $AGENT_TYPE_05_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_05$ }
				}
			}
			# Agent type 06.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_06 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_06$
					}
					scheme_owner = { can_have_$AGENT_TYPE_06$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_06$
				}
				modifier = {
					add = $AGENT_TYPE_06_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_06$ }
				}
			}
			# Agent type 07.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_07 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_07$
					}
					scheme_owner = { can_have_$AGENT_TYPE_07$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_07$
				}
				modifier = {
					add = $AGENT_TYPE_07_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_07$ }
				}
			}
			# Agent type 08.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_08 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_08$
					}
					scheme_owner = { can_have_$AGENT_TYPE_08$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_08$
				}
				modifier = {
					add = $AGENT_TYPE_08_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_08$ }
				}
			}
			# Agent type 09.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_09 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_09$
					}
					scheme_owner = { can_have_$AGENT_TYPE_09$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_09$
				}
				modifier = {
					add = $AGENT_TYPE_09_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_09$ }
				}
			}
			# Agent type 10.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_10 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_10$
					}
					scheme_owner = { can_have_$AGENT_TYPE_10$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_10$
				}
				modifier = {
					add = $AGENT_TYPE_10_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_10$ }
				}
			}
			# Agent type 11.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_11 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_11$
					}
					scheme_owner = { can_have_$AGENT_TYPE_11$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_11$
				}
				modifier = {
					add = $AGENT_TYPE_11_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_11$ }
				}
			}
			# Agent type 12.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_12 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_12$
					}
					scheme_owner = { can_have_$AGENT_TYPE_12$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_12$
				}
				modifier = {
					add = $AGENT_TYPE_12_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_12$ }
				}
			}
		}
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0001 }
	}
}
roll_critical_moment_options_13_agent_types_effect = {
	save_scope_as = scheme
	scope:scheme.task_contract ?= { save_scope_as = task_contract }
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:$OUTPUT_EVENT$
	}
	if = {
		limit = {
			any_scheme_agent_slot = { count < character_max_scheme_agents_value }
			scope:scheme = {
				NOR = {
					has_variable = choice_a
					has_variable = choice_b
				}
			}
		}
		# First, let's determine which types we're using and which we ain't.
		## Agent type 01.
		save_scope_value_as = {
			name = agent_type_01
			value = flag:$AGENT_TYPE_01$
		}
		## Agent type 02.
		save_scope_value_as = {
			name = agent_type_02
			value = flag:$AGENT_TYPE_02$
		}
		## Agent type 03.
		save_scope_value_as = {
			name = agent_type_03
			value = flag:$AGENT_TYPE_03$
		}
		## Agent type 04.
		save_scope_value_as = {
			name = agent_type_04
			value = flag:$AGENT_TYPE_04$
		}
		## Agent type 05.
		save_scope_value_as = {
			name = agent_type_05
			value = flag:$AGENT_TYPE_05$
		}
		## Agent type 06.
		save_scope_value_as = {
			name = agent_type_06
			value = flag:$AGENT_TYPE_06$
		}
		## Agent type 07.
		save_scope_value_as = {
			name = agent_type_07
			value = flag:$AGENT_TYPE_07$
		}
		## Agent type 08.
		save_scope_value_as = {
			name = agent_type_08
			value = flag:$AGENT_TYPE_08$
		}
		## Agent type 09.
		save_scope_value_as = {
			name = agent_type_09
			value = flag:$AGENT_TYPE_09$
		}
		## Agent type 10.
		save_scope_value_as = {
			name = agent_type_10
			value = flag:$AGENT_TYPE_10$
		}
		## Agent type 11.
		save_scope_value_as = {
			name = agent_type_11
			value = flag:$AGENT_TYPE_11$
		}
		## Agent type 12.
		save_scope_value_as = {
			name = agent_type_12
			value = flag:$AGENT_TYPE_12$
		}
		## Agent type 13.
		save_scope_value_as = {
			name = agent_type_13
			value = flag:$AGENT_TYPE_13$
		}
		# Then we roll for who's getting picked.
		## For var:choice_a.
		random_list = {
			# Agent type 01.
			0 = {
				trigger = {
					NOT = { scope:agent_type_01 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_01$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_01$
				}
				modifier = {
					add = $AGENT_TYPE_01_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_01$ }
				}
			}
			# Agent type 02.
			0 = {
				trigger = {
					NOT = { scope:agent_type_02 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_02$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_02$
				}
				modifier = {
					add = $AGENT_TYPE_02_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_02$ }
				}
			}
			# Agent type 03.
			0 = {
				trigger = {
					NOT = { scope:agent_type_03 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_03$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_03$
				}
				modifier = {
					add = $AGENT_TYPE_03_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_03$ }
				}
			}
			# Agent type 04.
			0 = {
				trigger = {
					NOT = { scope:agent_type_04 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_04$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_04$
				}
				modifier = {
					add = $AGENT_TYPE_04_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_04$ }
				}
			}
			# Agent type 05.
			0 = {
				trigger = {
					NOT = { scope:agent_type_05 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_05$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_05$
				}
				modifier = {
					add = $AGENT_TYPE_05_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_05$ }
				}
			}
			# Agent type 06.
			0 = {
				trigger = {
					NOT = { scope:agent_type_06 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_06$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_06$
				}
				modifier = {
					add = $AGENT_TYPE_06_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_06$ }
				}
			}
			# Agent type 07.
			0 = {
				trigger = {
					NOT = { scope:agent_type_07 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_07$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_07$
				}
				modifier = {
					add = $AGENT_TYPE_07_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_07$ }
				}
			}
			# Agent type 08.
			0 = {
				trigger = {
					NOT = { scope:agent_type_08 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_08$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_08$
				}
				modifier = {
					add = $AGENT_TYPE_08_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_08$ }
				}
			}
			# Agent type 09.
			0 = {
				trigger = {
					NOT = { scope:agent_type_09 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_09$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_09$
				}
				modifier = {
					add = $AGENT_TYPE_09_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_09$ }
				}
			}
			# Agent type 10.
			0 = {
				trigger = {
					NOT = { scope:agent_type_10 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_10$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_10$
				}
				modifier = {
					add = $AGENT_TYPE_10_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_10$ }
				}
			}
			# Agent type 11.
			0 = {
				trigger = {
					NOT = { scope:agent_type_11 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_11$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_11$
				}
				modifier = {
					add = $AGENT_TYPE_11_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_11$ }
				}
			}
			# Agent type 12.
			0 = {
				trigger = {
					NOT = { scope:agent_type_12 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_12$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_12$
				}
				modifier = {
					add = $AGENT_TYPE_12_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_12$ }
				}
			}
			# Agent type 13.
			0 = {
				trigger = {
					NOT = { scope:agent_type_13 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_13$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_13$
				}
				modifier = {
					add = $AGENT_TYPE_13_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_13$ }
				}
			}
		}
		## And var:choice_b.
		random_list = {
			# Agent type 01.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_01 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_01$
					}
					scheme_owner = { can_have_$AGENT_TYPE_01$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_01$
				}
				modifier = {
					add = $AGENT_TYPE_01_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_01$ }
				}
			}
			# Agent type 02.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_02 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_02$
					}
					scheme_owner = { can_have_$AGENT_TYPE_02$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_02$
				}
				modifier = {
					add = $AGENT_TYPE_02_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_02$ }
				}
			}
			# Agent type 03.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_03 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_03$
					}
					scheme_owner = { can_have_$AGENT_TYPE_03$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_03$
				}
				modifier = {
					add = $AGENT_TYPE_03_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_03$ }
				}
			}
			# Agent type 04.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_04 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_04$
					}
					scheme_owner = { can_have_$AGENT_TYPE_04$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_04$
				}
				modifier = {
					add = $AGENT_TYPE_04_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_04$ }
				}
			}
			# Agent type 05.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_05 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_05$
					}
					scheme_owner = { can_have_$AGENT_TYPE_05$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_05$
				}
				modifier = {
					add = $AGENT_TYPE_05_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_05$ }
				}
			}
			# Agent type 06.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_06 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_06$
					}
					scheme_owner = { can_have_$AGENT_TYPE_06$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_06$
				}
				modifier = {
					add = $AGENT_TYPE_06_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_06$ }
				}
			}
			# Agent type 07.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_07 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_07$
					}
					scheme_owner = { can_have_$AGENT_TYPE_07$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_07$
				}
				modifier = {
					add = $AGENT_TYPE_07_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_07$ }
				}
			}
			# Agent type 08.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_08 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_08$
					}
					scheme_owner = { can_have_$AGENT_TYPE_08$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_08$
				}
				modifier = {
					add = $AGENT_TYPE_08_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_08$ }
				}
			}
			# Agent type 09.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_09 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_09$
					}
					scheme_owner = { can_have_$AGENT_TYPE_09$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_09$
				}
				modifier = {
					add = $AGENT_TYPE_09_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_09$ }
				}
			}
			# Agent type 10.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_10 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_10$
					}
					scheme_owner = { can_have_$AGENT_TYPE_10$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_10$
				}
				modifier = {
					add = $AGENT_TYPE_10_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_10$ }
				}
			}
			# Agent type 11.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_11 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_11$
					}
					scheme_owner = { can_have_$AGENT_TYPE_11$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_11$
				}
				modifier = {
					add = $AGENT_TYPE_11_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_11$ }
				}
			}
			# Agent type 12.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_12 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_12$
					}
					scheme_owner = { can_have_$AGENT_TYPE_12$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_12$
				}
				modifier = {
					add = $AGENT_TYPE_12_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_12$ }
				}
			}
			# Agent type 13.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_13 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_13$
					}
					scheme_owner = { can_have_$AGENT_TYPE_13$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_13$
				}
				modifier = {
					add = $AGENT_TYPE_13_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_13$ }
				}
			}
		}
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0001 }
	}
}
roll_critical_moment_options_14_agent_types_effect = {
	save_scope_as = scheme
	scope:scheme.task_contract ?= { save_scope_as = task_contract }
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:$OUTPUT_EVENT$
	}
	if = {
		limit = {
			any_scheme_agent_slot = { count < character_max_scheme_agents_value }
			scope:scheme = {
				NOR = {
					has_variable = choice_a
					has_variable = choice_b
				}
			}
		}
		# First, let's determine which types we're using and which we ain't.
		## Agent type 01.
		save_scope_value_as = {
			name = agent_type_01
			value = flag:$AGENT_TYPE_01$
		}
		## Agent type 02.
		save_scope_value_as = {
			name = agent_type_02
			value = flag:$AGENT_TYPE_02$
		}
		## Agent type 03.
		save_scope_value_as = {
			name = agent_type_03
			value = flag:$AGENT_TYPE_03$
		}
		## Agent type 04.
		save_scope_value_as = {
			name = agent_type_04
			value = flag:$AGENT_TYPE_04$
		}
		## Agent type 05.
		save_scope_value_as = {
			name = agent_type_05
			value = flag:$AGENT_TYPE_05$
		}
		## Agent type 06.
		save_scope_value_as = {
			name = agent_type_06
			value = flag:$AGENT_TYPE_06$
		}
		## Agent type 07.
		save_scope_value_as = {
			name = agent_type_07
			value = flag:$AGENT_TYPE_07$
		}
		## Agent type 08.
		save_scope_value_as = {
			name = agent_type_08
			value = flag:$AGENT_TYPE_08$
		}
		## Agent type 09.
		save_scope_value_as = {
			name = agent_type_09
			value = flag:$AGENT_TYPE_09$
		}
		## Agent type 10.
		save_scope_value_as = {
			name = agent_type_10
			value = flag:$AGENT_TYPE_10$
		}
		## Agent type 11.
		save_scope_value_as = {
			name = agent_type_11
			value = flag:$AGENT_TYPE_11$
		}
		## Agent type 12.
		save_scope_value_as = {
			name = agent_type_12
			value = flag:$AGENT_TYPE_12$
		}
		## Agent type 13.
		save_scope_value_as = {
			name = agent_type_13
			value = flag:$AGENT_TYPE_13$
		}
		## Agent type 14.
		save_scope_value_as = {
			name = agent_type_14
			value = flag:$AGENT_TYPE_14$
		}
		# Then we roll for who's getting picked.
		## For var:choice_a.
		random_list = {
			# Agent type 01.
			0 = {
				trigger = {
					NOT = { scope:agent_type_01 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_01$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_01$
				}
				modifier = {
					add = $AGENT_TYPE_01_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_01$ }
				}
			}
			# Agent type 02.
			0 = {
				trigger = {
					NOT = { scope:agent_type_02 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_02$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_02$
				}
				modifier = {
					add = $AGENT_TYPE_02_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_02$ }
				}
			}
			# Agent type 03.
			0 = {
				trigger = {
					NOT = { scope:agent_type_03 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_03$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_03$
				}
				modifier = {
					add = $AGENT_TYPE_03_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_03$ }
				}
			}
			# Agent type 04.
			0 = {
				trigger = {
					NOT = { scope:agent_type_04 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_04$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_04$
				}
				modifier = {
					add = $AGENT_TYPE_04_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_04$ }
				}
			}
			# Agent type 05.
			0 = {
				trigger = {
					NOT = { scope:agent_type_05 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_05$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_05$
				}
				modifier = {
					add = $AGENT_TYPE_05_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_05$ }
				}
			}
			# Agent type 06.
			0 = {
				trigger = {
					NOT = { scope:agent_type_06 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_06$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_06$
				}
				modifier = {
					add = $AGENT_TYPE_06_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_06$ }
				}
			}
			# Agent type 07.
			0 = {
				trigger = {
					NOT = { scope:agent_type_07 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_07$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_07$
				}
				modifier = {
					add = $AGENT_TYPE_07_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_07$ }
				}
			}
			# Agent type 08.
			0 = {
				trigger = {
					NOT = { scope:agent_type_08 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_08$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_08$
				}
				modifier = {
					add = $AGENT_TYPE_08_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_08$ }
				}
			}
			# Agent type 09.
			0 = {
				trigger = {
					NOT = { scope:agent_type_09 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_09$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_09$
				}
				modifier = {
					add = $AGENT_TYPE_09_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_09$ }
				}
			}
			# Agent type 10.
			0 = {
				trigger = {
					NOT = { scope:agent_type_10 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_10$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_10$
				}
				modifier = {
					add = $AGENT_TYPE_10_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_10$ }
				}
			}
			# Agent type 11.
			0 = {
				trigger = {
					NOT = { scope:agent_type_11 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_11$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_11$
				}
				modifier = {
					add = $AGENT_TYPE_11_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_11$ }
				}
			}
			# Agent type 12.
			0 = {
				trigger = {
					NOT = { scope:agent_type_12 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_12$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_12$
				}
				modifier = {
					add = $AGENT_TYPE_12_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_12$ }
				}
			}
			# Agent type 13.
			0 = {
				trigger = {
					NOT = { scope:agent_type_13 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_13$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_13$
				}
				modifier = {
					add = $AGENT_TYPE_13_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_13$ }
				}
			}
			# Agent type 14.
			0 = {
				trigger = {
					NOT = { scope:agent_type_14 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_14$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_14$
				}
				modifier = {
					add = $AGENT_TYPE_14_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_14$ }
				}
			}
		}
		## And var:choice_b.
		random_list = {
			# Agent type 01.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_01 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_01$
					}
					scheme_owner = { can_have_$AGENT_TYPE_01$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_01$
				}
				modifier = {
					add = $AGENT_TYPE_01_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_01$ }
				}
			}
			# Agent type 02.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_02 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_02$
					}
					scheme_owner = { can_have_$AGENT_TYPE_02$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_02$
				}
				modifier = {
					add = $AGENT_TYPE_02_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_02$ }
				}
			}
			# Agent type 03.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_03 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_03$
					}
					scheme_owner = { can_have_$AGENT_TYPE_03$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_03$
				}
				modifier = {
					add = $AGENT_TYPE_03_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_03$ }
				}
			}
			# Agent type 04.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_04 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_04$
					}
					scheme_owner = { can_have_$AGENT_TYPE_04$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_04$
				}
				modifier = {
					add = $AGENT_TYPE_04_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_04$ }
				}
			}
			# Agent type 05.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_05 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_05$
					}
					scheme_owner = { can_have_$AGENT_TYPE_05$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_05$
				}
				modifier = {
					add = $AGENT_TYPE_05_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_05$ }
				}
			}
			# Agent type 06.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_06 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_06$
					}
					scheme_owner = { can_have_$AGENT_TYPE_06$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_06$
				}
				modifier = {
					add = $AGENT_TYPE_06_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_06$ }
				}
			}
			# Agent type 07.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_07 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_07$
					}
					scheme_owner = { can_have_$AGENT_TYPE_07$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_07$
				}
				modifier = {
					add = $AGENT_TYPE_07_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_07$ }
				}
			}
			# Agent type 08.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_08 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_08$
					}
					scheme_owner = { can_have_$AGENT_TYPE_08$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_08$
				}
				modifier = {
					add = $AGENT_TYPE_08_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_08$ }
				}
			}
			# Agent type 09.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_09 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_09$
					}
					scheme_owner = { can_have_$AGENT_TYPE_09$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_09$
				}
				modifier = {
					add = $AGENT_TYPE_09_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_09$ }
				}
			}
			# Agent type 10.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_10 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_10$
					}
					scheme_owner = { can_have_$AGENT_TYPE_10$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_10$
				}
				modifier = {
					add = $AGENT_TYPE_10_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_10$ }
				}
			}
			# Agent type 11.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_11 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_11$
					}
					scheme_owner = { can_have_$AGENT_TYPE_11$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_11$
				}
				modifier = {
					add = $AGENT_TYPE_11_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_11$ }
				}
			}
			# Agent type 12.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_12 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_12$
					}
					scheme_owner = { can_have_$AGENT_TYPE_12$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_12$
				}
				modifier = {
					add = $AGENT_TYPE_12_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_12$ }
				}
			}
			# Agent type 13.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_13 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_13$
					}
					scheme_owner = { can_have_$AGENT_TYPE_13$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_13$
				}
				modifier = {
					add = $AGENT_TYPE_13_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_13$ }
				}
			}
			# Agent type 14.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_14 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_14$
					}
					scheme_owner = { can_have_$AGENT_TYPE_14$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_14$
				}
				modifier = {
					add = $AGENT_TYPE_14_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_14$ }
				}
			}
		}
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0001 }
	}
}
roll_critical_moment_options_15_agent_types_effect = {
	save_scope_as = scheme
	scope:scheme.task_contract ?= { save_scope_as = task_contract }
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:$OUTPUT_EVENT$
	}
	if = {
		limit = {
			any_scheme_agent_slot = { count < character_max_scheme_agents_value }
			scope:scheme = {
				NOR = {
					has_variable = choice_a
					has_variable = choice_b
				}
			}
		}
		# First, let's determine which types we're using and which we ain't.
		## Agent type 01.
		save_scope_value_as = {
			name = agent_type_01
			value = flag:$AGENT_TYPE_01$
		}
		## Agent type 02.
		save_scope_value_as = {
			name = agent_type_02
			value = flag:$AGENT_TYPE_02$
		}
		## Agent type 03.
		save_scope_value_as = {
			name = agent_type_03
			value = flag:$AGENT_TYPE_03$
		}
		## Agent type 04.
		save_scope_value_as = {
			name = agent_type_04
			value = flag:$AGENT_TYPE_04$
		}
		## Agent type 05.
		save_scope_value_as = {
			name = agent_type_05
			value = flag:$AGENT_TYPE_05$
		}
		## Agent type 06.
		save_scope_value_as = {
			name = agent_type_06
			value = flag:$AGENT_TYPE_06$
		}
		## Agent type 07.
		save_scope_value_as = {
			name = agent_type_07
			value = flag:$AGENT_TYPE_07$
		}
		## Agent type 08.
		save_scope_value_as = {
			name = agent_type_08
			value = flag:$AGENT_TYPE_08$
		}
		## Agent type 09.
		save_scope_value_as = {
			name = agent_type_09
			value = flag:$AGENT_TYPE_09$
		}
		## Agent type 10.
		save_scope_value_as = {
			name = agent_type_10
			value = flag:$AGENT_TYPE_10$
		}
		## Agent type 11.
		save_scope_value_as = {
			name = agent_type_11
			value = flag:$AGENT_TYPE_11$
		}
		## Agent type 12.
		save_scope_value_as = {
			name = agent_type_12
			value = flag:$AGENT_TYPE_12$
		}
		## Agent type 13.
		save_scope_value_as = {
			name = agent_type_13
			value = flag:$AGENT_TYPE_13$
		}
		## Agent type 14.
		save_scope_value_as = {
			name = agent_type_14
			value = flag:$AGENT_TYPE_14$
		}
		## Agent type 15.
		save_scope_value_as = {
			name = agent_type_15
			value = flag:$AGENT_TYPE_15$
		}
		# Then we roll for who's getting picked.
		## For var:choice_a.
		random_list = {
			# Agent type 01.
			0 = {
				trigger = {
					NOT = { scope:agent_type_01 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_01$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_01$
				}
				modifier = {
					add = $AGENT_TYPE_01_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_01$ }
				}
			}
			# Agent type 02.
			0 = {
				trigger = {
					NOT = { scope:agent_type_02 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_02$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_02$
				}
				modifier = {
					add = $AGENT_TYPE_02_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_02$ }
				}
			}
			# Agent type 03.
			0 = {
				trigger = {
					NOT = { scope:agent_type_03 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_03$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_03$
				}
				modifier = {
					add = $AGENT_TYPE_03_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_03$ }
				}
			}
			# Agent type 04.
			0 = {
				trigger = {
					NOT = { scope:agent_type_04 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_04$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_04$
				}
				modifier = {
					add = $AGENT_TYPE_04_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_04$ }
				}
			}
			# Agent type 05.
			0 = {
				trigger = {
					NOT = { scope:agent_type_05 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_05$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_05$
				}
				modifier = {
					add = $AGENT_TYPE_05_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_05$ }
				}
			}
			# Agent type 06.
			0 = {
				trigger = {
					NOT = { scope:agent_type_06 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_06$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_06$
				}
				modifier = {
					add = $AGENT_TYPE_06_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_06$ }
				}
			}
			# Agent type 07.
			0 = {
				trigger = {
					NOT = { scope:agent_type_07 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_07$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_07$
				}
				modifier = {
					add = $AGENT_TYPE_07_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_07$ }
				}
			}
			# Agent type 08.
			0 = {
				trigger = {
					NOT = { scope:agent_type_08 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_08$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_08$
				}
				modifier = {
					add = $AGENT_TYPE_08_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_08$ }
				}
			}
			# Agent type 09.
			0 = {
				trigger = {
					NOT = { scope:agent_type_09 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_09$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_09$
				}
				modifier = {
					add = $AGENT_TYPE_09_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_09$ }
				}
			}
			# Agent type 10.
			0 = {
				trigger = {
					NOT = { scope:agent_type_10 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_10$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_10$
				}
				modifier = {
					add = $AGENT_TYPE_10_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_10$ }
				}
			}
			# Agent type 11.
			0 = {
				trigger = {
					NOT = { scope:agent_type_11 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_11$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_11$
				}
				modifier = {
					add = $AGENT_TYPE_11_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_11$ }
				}
			}
			# Agent type 12.
			0 = {
				trigger = {
					NOT = { scope:agent_type_12 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_12$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_12$
				}
				modifier = {
					add = $AGENT_TYPE_12_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_12$ }
				}
			}
			# Agent type 13.
			0 = {
				trigger = {
					NOT = { scope:agent_type_13 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_13$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_13$
				}
				modifier = {
					add = $AGENT_TYPE_13_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_13$ }
				}
			}
			# Agent type 14.
			0 = {
				trigger = {
					NOT = { scope:agent_type_14 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_14$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_14$
				}
				modifier = {
					add = $AGENT_TYPE_14_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_14$ }
				}
			}
			# Agent type 15.
			0 = {
				trigger = {
					NOT = { scope:agent_type_15 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_15$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_15$
				}
				modifier = {
					add = $AGENT_TYPE_15_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_15$ }
				}
			}
		}
		## And var:choice_b.
		random_list = {
			# Agent type 01.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_01 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_01$
					}
					scheme_owner = { can_have_$AGENT_TYPE_01$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_01$
				}
				modifier = {
					add = $AGENT_TYPE_01_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_01$ }
				}
			}
			# Agent type 02.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_02 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_02$
					}
					scheme_owner = { can_have_$AGENT_TYPE_02$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_02$
				}
				modifier = {
					add = $AGENT_TYPE_02_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_02$ }
				}
			}
			# Agent type 03.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_03 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_03$
					}
					scheme_owner = { can_have_$AGENT_TYPE_03$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_03$
				}
				modifier = {
					add = $AGENT_TYPE_03_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_03$ }
				}
			}
			# Agent type 04.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_04 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_04$
					}
					scheme_owner = { can_have_$AGENT_TYPE_04$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_04$
				}
				modifier = {
					add = $AGENT_TYPE_04_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_04$ }
				}
			}
			# Agent type 05.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_05 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_05$
					}
					scheme_owner = { can_have_$AGENT_TYPE_05$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_05$
				}
				modifier = {
					add = $AGENT_TYPE_05_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_05$ }
				}
			}
			# Agent type 06.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_06 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_06$
					}
					scheme_owner = { can_have_$AGENT_TYPE_06$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_06$
				}
				modifier = {
					add = $AGENT_TYPE_06_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_06$ }
				}
			}
			# Agent type 07.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_07 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_07$
					}
					scheme_owner = { can_have_$AGENT_TYPE_07$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_07$
				}
				modifier = {
					add = $AGENT_TYPE_07_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_07$ }
				}
			}
			# Agent type 08.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_08 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_08$
					}
					scheme_owner = { can_have_$AGENT_TYPE_08$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_08$
				}
				modifier = {
					add = $AGENT_TYPE_08_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_08$ }
				}
			}
			# Agent type 09.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_09 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_09$
					}
					scheme_owner = { can_have_$AGENT_TYPE_09$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_09$
				}
				modifier = {
					add = $AGENT_TYPE_09_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_09$ }
				}
			}
			# Agent type 10.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_10 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_10$
					}
					scheme_owner = { can_have_$AGENT_TYPE_10$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_10$
				}
				modifier = {
					add = $AGENT_TYPE_10_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_10$ }
				}
			}
			# Agent type 11.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_11 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_11$
					}
					scheme_owner = { can_have_$AGENT_TYPE_11$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_11$
				}
				modifier = {
					add = $AGENT_TYPE_11_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_11$ }
				}
			}
			# Agent type 12.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_12 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_12$
					}
					scheme_owner = { can_have_$AGENT_TYPE_12$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_12$
				}
				modifier = {
					add = $AGENT_TYPE_12_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_12$ }
				}
			}
			# Agent type 13.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_13 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_13$
					}
					scheme_owner = { can_have_$AGENT_TYPE_13$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_13$
				}
				modifier = {
					add = $AGENT_TYPE_13_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_13$ }
				}
			}
			# Agent type 14.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_14 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_14$
					}
					scheme_owner = { can_have_$AGENT_TYPE_14$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_14$
				}
				modifier = {
					add = $AGENT_TYPE_14_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_14$ }
				}
			}
			# Agent type 15.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_15 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_15$
					}
					scheme_owner = { can_have_$AGENT_TYPE_15$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_15$
				}
				modifier = {
					add = $AGENT_TYPE_15_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_15$ }
				}
			}
		}
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0001 }
	}
}
roll_critical_moment_options_16_agent_types_effect = {
	save_scope_as = scheme
	scope:scheme.task_contract ?= { save_scope_as = task_contract }
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:$OUTPUT_EVENT$
	}
	if = {
		limit = {
			any_scheme_agent_slot = { count < character_max_scheme_agents_value }
			scope:scheme = {
				NOR = {
					has_variable = choice_a
					has_variable = choice_b
				}
			}
		}
		# First, let's determine which types we're using and which we ain't.
		## Agent type 01.
		save_scope_value_as = {
			name = agent_type_01
			value = flag:$AGENT_TYPE_01$
		}
		## Agent type 02.
		save_scope_value_as = {
			name = agent_type_02
			value = flag:$AGENT_TYPE_02$
		}
		## Agent type 03.
		save_scope_value_as = {
			name = agent_type_03
			value = flag:$AGENT_TYPE_03$
		}
		## Agent type 04.
		save_scope_value_as = {
			name = agent_type_04
			value = flag:$AGENT_TYPE_04$
		}
		## Agent type 05.
		save_scope_value_as = {
			name = agent_type_05
			value = flag:$AGENT_TYPE_05$
		}
		## Agent type 06.
		save_scope_value_as = {
			name = agent_type_06
			value = flag:$AGENT_TYPE_06$
		}
		## Agent type 07.
		save_scope_value_as = {
			name = agent_type_07
			value = flag:$AGENT_TYPE_07$
		}
		## Agent type 08.
		save_scope_value_as = {
			name = agent_type_08
			value = flag:$AGENT_TYPE_08$
		}
		## Agent type 09.
		save_scope_value_as = {
			name = agent_type_09
			value = flag:$AGENT_TYPE_09$
		}
		## Agent type 10.
		save_scope_value_as = {
			name = agent_type_10
			value = flag:$AGENT_TYPE_10$
		}
		## Agent type 11.
		save_scope_value_as = {
			name = agent_type_11
			value = flag:$AGENT_TYPE_11$
		}
		## Agent type 12.
		save_scope_value_as = {
			name = agent_type_12
			value = flag:$AGENT_TYPE_12$
		}
		## Agent type 13.
		save_scope_value_as = {
			name = agent_type_13
			value = flag:$AGENT_TYPE_13$
		}
		## Agent type 14.
		save_scope_value_as = {
			name = agent_type_14
			value = flag:$AGENT_TYPE_14$
		}
		## Agent type 15.
		save_scope_value_as = {
			name = agent_type_15
			value = flag:$AGENT_TYPE_15$
		}
		## Agent type 16.
		save_scope_value_as = {
			name = agent_type_16
			value = flag:$AGENT_TYPE_16$
		}
		# Then we roll for who's getting picked.
		## For var:choice_a.
		random_list = {
			# Agent type 01.
			0 = {
				trigger = {
					NOT = { scope:agent_type_01 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_01$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_01$
				}
				modifier = {
					add = $AGENT_TYPE_01_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_01$ }
				}
			}
			# Agent type 02.
			0 = {
				trigger = {
					NOT = { scope:agent_type_02 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_02$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_02$
				}
				modifier = {
					add = $AGENT_TYPE_02_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_02$ }
				}
			}
			# Agent type 03.
			0 = {
				trigger = {
					NOT = { scope:agent_type_03 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_03$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_03$
				}
				modifier = {
					add = $AGENT_TYPE_03_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_03$ }
				}
			}
			# Agent type 04.
			0 = {
				trigger = {
					NOT = { scope:agent_type_04 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_04$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_04$
				}
				modifier = {
					add = $AGENT_TYPE_04_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_04$ }
				}
			}
			# Agent type 05.
			0 = {
				trigger = {
					NOT = { scope:agent_type_05 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_05$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_05$
				}
				modifier = {
					add = $AGENT_TYPE_05_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_05$ }
				}
			}
			# Agent type 06.
			0 = {
				trigger = {
					NOT = { scope:agent_type_06 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_06$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_06$
				}
				modifier = {
					add = $AGENT_TYPE_06_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_06$ }
				}
			}
			# Agent type 07.
			0 = {
				trigger = {
					NOT = { scope:agent_type_07 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_07$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_07$
				}
				modifier = {
					add = $AGENT_TYPE_07_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_07$ }
				}
			}
			# Agent type 08.
			0 = {
				trigger = {
					NOT = { scope:agent_type_08 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_08$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_08$
				}
				modifier = {
					add = $AGENT_TYPE_08_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_08$ }
				}
			}
			# Agent type 09.
			0 = {
				trigger = {
					NOT = { scope:agent_type_09 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_09$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_09$
				}
				modifier = {
					add = $AGENT_TYPE_09_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_09$ }
				}
			}
			# Agent type 10.
			0 = {
				trigger = {
					NOT = { scope:agent_type_10 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_10$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_10$
				}
				modifier = {
					add = $AGENT_TYPE_10_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_10$ }
				}
			}
			# Agent type 11.
			0 = {
				trigger = {
					NOT = { scope:agent_type_11 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_11$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_11$
				}
				modifier = {
					add = $AGENT_TYPE_11_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_11$ }
				}
			}
			# Agent type 12.
			0 = {
				trigger = {
					NOT = { scope:agent_type_12 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_12$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_12$
				}
				modifier = {
					add = $AGENT_TYPE_12_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_12$ }
				}
			}
			# Agent type 13.
			0 = {
				trigger = {
					NOT = { scope:agent_type_13 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_13$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_13$
				}
				modifier = {
					add = $AGENT_TYPE_13_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_13$ }
				}
			}
			# Agent type 14.
			0 = {
				trigger = {
					NOT = { scope:agent_type_14 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_14$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_14$
				}
				modifier = {
					add = $AGENT_TYPE_14_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_14$ }
				}
			}
			# Agent type 15.
			0 = {
				trigger = {
					NOT = { scope:agent_type_15 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_15$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_15$
				}
				modifier = {
					add = $AGENT_TYPE_15_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_15$ }
				}
			}
			# Agent type 16.
			0 = {
				trigger = {
					NOT = { scope:agent_type_16 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_16$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_16$
				}
				modifier = {
					add = $AGENT_TYPE_16_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_16$ }
				}
			}
		}
		## And var:choice_b.
		random_list = {
			# Agent type 01.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_01 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_01$
					}
					scheme_owner = { can_have_$AGENT_TYPE_01$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_01$
				}
				modifier = {
					add = $AGENT_TYPE_01_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_01$ }
				}
			}
			# Agent type 02.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_02 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_02$
					}
					scheme_owner = { can_have_$AGENT_TYPE_02$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_02$
				}
				modifier = {
					add = $AGENT_TYPE_02_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_02$ }
				}
			}
			# Agent type 03.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_03 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_03$
					}
					scheme_owner = { can_have_$AGENT_TYPE_03$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_03$
				}
				modifier = {
					add = $AGENT_TYPE_03_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_03$ }
				}
			}
			# Agent type 04.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_04 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_04$
					}
					scheme_owner = { can_have_$AGENT_TYPE_04$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_04$
				}
				modifier = {
					add = $AGENT_TYPE_04_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_04$ }
				}
			}
			# Agent type 05.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_05 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_05$
					}
					scheme_owner = { can_have_$AGENT_TYPE_05$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_05$
				}
				modifier = {
					add = $AGENT_TYPE_05_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_05$ }
				}
			}
			# Agent type 06.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_06 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_06$
					}
					scheme_owner = { can_have_$AGENT_TYPE_06$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_06$
				}
				modifier = {
					add = $AGENT_TYPE_06_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_06$ }
				}
			}
			# Agent type 07.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_07 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_07$
					}
					scheme_owner = { can_have_$AGENT_TYPE_07$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_07$
				}
				modifier = {
					add = $AGENT_TYPE_07_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_07$ }
				}
			}
			# Agent type 08.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_08 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_08$
					}
					scheme_owner = { can_have_$AGENT_TYPE_08$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_08$
				}
				modifier = {
					add = $AGENT_TYPE_08_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_08$ }
				}
			}
			# Agent type 09.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_09 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_09$
					}
					scheme_owner = { can_have_$AGENT_TYPE_09$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_09$
				}
				modifier = {
					add = $AGENT_TYPE_09_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_09$ }
				}
			}
			# Agent type 10.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_10 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_10$
					}
					scheme_owner = { can_have_$AGENT_TYPE_10$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_10$
				}
				modifier = {
					add = $AGENT_TYPE_10_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_10$ }
				}
			}
			# Agent type 11.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_11 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_11$
					}
					scheme_owner = { can_have_$AGENT_TYPE_11$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_11$
				}
				modifier = {
					add = $AGENT_TYPE_11_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_11$ }
				}
			}
			# Agent type 12.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_12 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_12$
					}
					scheme_owner = { can_have_$AGENT_TYPE_12$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_12$
				}
				modifier = {
					add = $AGENT_TYPE_12_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_12$ }
				}
			}
			# Agent type 13.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_13 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_13$
					}
					scheme_owner = { can_have_$AGENT_TYPE_13$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_13$
				}
				modifier = {
					add = $AGENT_TYPE_13_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_13$ }
				}
			}
			# Agent type 14.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_14 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_14$
					}
					scheme_owner = { can_have_$AGENT_TYPE_14$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_14$
				}
				modifier = {
					add = $AGENT_TYPE_14_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_14$ }
				}
			}
			# Agent type 15.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_15 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_15$
					}
					scheme_owner = { can_have_$AGENT_TYPE_15$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_15$
				}
				modifier = {
					add = $AGENT_TYPE_15_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_15$ }
				}
			}
			# Agent type 16.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_16 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_16$
					}
					scheme_owner = { can_have_$AGENT_TYPE_16$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_16$
				}
				modifier = {
					add = $AGENT_TYPE_16_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_16$ }
				}
			}
		}
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0001 }
	}
}
roll_critical_moment_options_17_agent_types_effect = {
	save_scope_as = scheme
	scope:scheme.task_contract ?= { save_scope_as = task_contract }
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:$OUTPUT_EVENT$
	}
	if = {
		limit = {
			any_scheme_agent_slot = { count < character_max_scheme_agents_value }
			scope:scheme = {
				NOR = {
					has_variable = choice_a
					has_variable = choice_b
				}
			}
		}
		# First, let's determine which types we're using and which we ain't.
		## Agent type 01.
		save_scope_value_as = {
			name = agent_type_01
			value = flag:$AGENT_TYPE_01$
		}
		## Agent type 02.
		save_scope_value_as = {
			name = agent_type_02
			value = flag:$AGENT_TYPE_02$
		}
		## Agent type 03.
		save_scope_value_as = {
			name = agent_type_03
			value = flag:$AGENT_TYPE_03$
		}
		## Agent type 04.
		save_scope_value_as = {
			name = agent_type_04
			value = flag:$AGENT_TYPE_04$
		}
		## Agent type 05.
		save_scope_value_as = {
			name = agent_type_05
			value = flag:$AGENT_TYPE_05$
		}
		## Agent type 06.
		save_scope_value_as = {
			name = agent_type_06
			value = flag:$AGENT_TYPE_06$
		}
		## Agent type 07.
		save_scope_value_as = {
			name = agent_type_07
			value = flag:$AGENT_TYPE_07$
		}
		## Agent type 08.
		save_scope_value_as = {
			name = agent_type_08
			value = flag:$AGENT_TYPE_08$
		}
		## Agent type 09.
		save_scope_value_as = {
			name = agent_type_09
			value = flag:$AGENT_TYPE_09$
		}
		## Agent type 10.
		save_scope_value_as = {
			name = agent_type_10
			value = flag:$AGENT_TYPE_10$
		}
		## Agent type 11.
		save_scope_value_as = {
			name = agent_type_11
			value = flag:$AGENT_TYPE_11$
		}
		## Agent type 12.
		save_scope_value_as = {
			name = agent_type_12
			value = flag:$AGENT_TYPE_12$
		}
		## Agent type 13.
		save_scope_value_as = {
			name = agent_type_13
			value = flag:$AGENT_TYPE_13$
		}
		## Agent type 14.
		save_scope_value_as = {
			name = agent_type_14
			value = flag:$AGENT_TYPE_14$
		}
		## Agent type 15.
		save_scope_value_as = {
			name = agent_type_15
			value = flag:$AGENT_TYPE_15$
		}
		## Agent type 16.
		save_scope_value_as = {
			name = agent_type_16
			value = flag:$AGENT_TYPE_16$
		}
		## Agent type 17.
		save_scope_value_as = {
			name = agent_type_17
			value = flag:$AGENT_TYPE_17$
		}
		# Then we roll for who's getting picked.
		## For var:choice_a.
		random_list = {
			# Agent type 01.
			0 = {
				trigger = {
					NOT = { scope:agent_type_01 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_01$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_01$
				}
				modifier = {
					add = $AGENT_TYPE_01_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_01$ }
				}
			}
			# Agent type 02.
			0 = {
				trigger = {
					NOT = { scope:agent_type_02 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_02$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_02$
				}
				modifier = {
					add = $AGENT_TYPE_02_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_02$ }
				}
			}
			# Agent type 03.
			0 = {
				trigger = {
					NOT = { scope:agent_type_03 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_03$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_03$
				}
				modifier = {
					add = $AGENT_TYPE_03_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_03$ }
				}
			}
			# Agent type 04.
			0 = {
				trigger = {
					NOT = { scope:agent_type_04 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_04$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_04$
				}
				modifier = {
					add = $AGENT_TYPE_04_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_04$ }
				}
			}
			# Agent type 05.
			0 = {
				trigger = {
					NOT = { scope:agent_type_05 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_05$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_05$
				}
				modifier = {
					add = $AGENT_TYPE_05_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_05$ }
				}
			}
			# Agent type 06.
			0 = {
				trigger = {
					NOT = { scope:agent_type_06 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_06$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_06$
				}
				modifier = {
					add = $AGENT_TYPE_06_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_06$ }
				}
			}
			# Agent type 07.
			0 = {
				trigger = {
					NOT = { scope:agent_type_07 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_07$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_07$
				}
				modifier = {
					add = $AGENT_TYPE_07_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_07$ }
				}
			}
			# Agent type 08.
			0 = {
				trigger = {
					NOT = { scope:agent_type_08 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_08$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_08$
				}
				modifier = {
					add = $AGENT_TYPE_08_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_08$ }
				}
			}
			# Agent type 09.
			0 = {
				trigger = {
					NOT = { scope:agent_type_09 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_09$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_09$
				}
				modifier = {
					add = $AGENT_TYPE_09_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_09$ }
				}
			}
			# Agent type 10.
			0 = {
				trigger = {
					NOT = { scope:agent_type_10 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_10$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_10$
				}
				modifier = {
					add = $AGENT_TYPE_10_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_10$ }
				}
			}
			# Agent type 11.
			0 = {
				trigger = {
					NOT = { scope:agent_type_11 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_11$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_11$
				}
				modifier = {
					add = $AGENT_TYPE_11_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_11$ }
				}
			}
			# Agent type 12.
			0 = {
				trigger = {
					NOT = { scope:agent_type_12 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_12$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_12$
				}
				modifier = {
					add = $AGENT_TYPE_12_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_12$ }
				}
			}
			# Agent type 13.
			0 = {
				trigger = {
					NOT = { scope:agent_type_13 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_13$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_13$
				}
				modifier = {
					add = $AGENT_TYPE_13_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_13$ }
				}
			}
			# Agent type 14.
			0 = {
				trigger = {
					NOT = { scope:agent_type_14 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_14$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_14$
				}
				modifier = {
					add = $AGENT_TYPE_14_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_14$ }
				}
			}
			# Agent type 15.
			0 = {
				trigger = {
					NOT = { scope:agent_type_15 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_15$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_15$
				}
				modifier = {
					add = $AGENT_TYPE_15_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_15$ }
				}
			}
			# Agent type 16.
			0 = {
				trigger = {
					NOT = { scope:agent_type_16 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_16$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_16$
				}
				modifier = {
					add = $AGENT_TYPE_16_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_16$ }
				}
			}
			# Agent type 17.
			0 = {
				trigger = {
					NOT = { scope:agent_type_17 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_17$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_17$
				}
				modifier = {
					add = $AGENT_TYPE_17_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_17$ }
				}
			}
		}
		## And var:choice_b.
		random_list = {
			# Agent type 01.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_01 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_01$
					}
					scheme_owner = { can_have_$AGENT_TYPE_01$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_01$
				}
				modifier = {
					add = $AGENT_TYPE_01_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_01$ }
				}
			}
			# Agent type 02.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_02 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_02$
					}
					scheme_owner = { can_have_$AGENT_TYPE_02$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_02$
				}
				modifier = {
					add = $AGENT_TYPE_02_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_02$ }
				}
			}
			# Agent type 03.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_03 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_03$
					}
					scheme_owner = { can_have_$AGENT_TYPE_03$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_03$
				}
				modifier = {
					add = $AGENT_TYPE_03_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_03$ }
				}
			}
			# Agent type 04.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_04 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_04$
					}
					scheme_owner = { can_have_$AGENT_TYPE_04$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_04$
				}
				modifier = {
					add = $AGENT_TYPE_04_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_04$ }
				}
			}
			# Agent type 05.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_05 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_05$
					}
					scheme_owner = { can_have_$AGENT_TYPE_05$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_05$
				}
				modifier = {
					add = $AGENT_TYPE_05_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_05$ }
				}
			}
			# Agent type 06.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_06 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_06$
					}
					scheme_owner = { can_have_$AGENT_TYPE_06$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_06$
				}
				modifier = {
					add = $AGENT_TYPE_06_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_06$ }
				}
			}
			# Agent type 07.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_07 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_07$
					}
					scheme_owner = { can_have_$AGENT_TYPE_07$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_07$
				}
				modifier = {
					add = $AGENT_TYPE_07_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_07$ }
				}
			}
			# Agent type 08.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_08 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_08$
					}
					scheme_owner = { can_have_$AGENT_TYPE_08$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_08$
				}
				modifier = {
					add = $AGENT_TYPE_08_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_08$ }
				}
			}
			# Agent type 09.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_09 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_09$
					}
					scheme_owner = { can_have_$AGENT_TYPE_09$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_09$
				}
				modifier = {
					add = $AGENT_TYPE_09_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_09$ }
				}
			}
			# Agent type 10.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_10 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_10$
					}
					scheme_owner = { can_have_$AGENT_TYPE_10$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_10$
				}
				modifier = {
					add = $AGENT_TYPE_10_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_10$ }
				}
			}
			# Agent type 11.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_11 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_11$
					}
					scheme_owner = { can_have_$AGENT_TYPE_11$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_11$
				}
				modifier = {
					add = $AGENT_TYPE_11_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_11$ }
				}
			}
			# Agent type 12.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_12 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_12$
					}
					scheme_owner = { can_have_$AGENT_TYPE_12$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_12$
				}
				modifier = {
					add = $AGENT_TYPE_12_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_12$ }
				}
			}
			# Agent type 13.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_13 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_13$
					}
					scheme_owner = { can_have_$AGENT_TYPE_13$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_13$
				}
				modifier = {
					add = $AGENT_TYPE_13_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_13$ }
				}
			}
			# Agent type 14.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_14 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_14$
					}
					scheme_owner = { can_have_$AGENT_TYPE_14$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_14$
				}
				modifier = {
					add = $AGENT_TYPE_14_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_14$ }
				}
			}
			# Agent type 15.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_15 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_15$
					}
					scheme_owner = { can_have_$AGENT_TYPE_15$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_15$
				}
				modifier = {
					add = $AGENT_TYPE_15_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_15$ }
				}
			}
			# Agent type 16.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_16 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_16$
					}
					scheme_owner = { can_have_$AGENT_TYPE_16$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_16$
				}
				modifier = {
					add = $AGENT_TYPE_16_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_16$ }
				}
			}
			# Agent type 17.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_17 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_17$
					}
					scheme_owner = { can_have_$AGENT_TYPE_17$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_17$
				}
				modifier = {
					add = $AGENT_TYPE_17_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_17$ }
				}
			}
		}
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0001 }
	}
}
roll_critical_moment_options_18_agent_types_effect = {
	save_scope_as = scheme
	scope:scheme.task_contract ?= { save_scope_as = task_contract }
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:$OUTPUT_EVENT$
	}
	if = {
		limit = {
			any_scheme_agent_slot = { count < character_max_scheme_agents_value }
			scope:scheme = {
				NOR = {
					has_variable = choice_a
					has_variable = choice_b
				}
			}
		}
		# First, let's determine which types we're using and which we ain't.
		## Agent type 01.
		save_scope_value_as = {
			name = agent_type_01
			value = flag:$AGENT_TYPE_01$
		}
		## Agent type 02.
		save_scope_value_as = {
			name = agent_type_02
			value = flag:$AGENT_TYPE_02$
		}
		## Agent type 03.
		save_scope_value_as = {
			name = agent_type_03
			value = flag:$AGENT_TYPE_03$
		}
		## Agent type 04.
		save_scope_value_as = {
			name = agent_type_04
			value = flag:$AGENT_TYPE_04$
		}
		## Agent type 05.
		save_scope_value_as = {
			name = agent_type_05
			value = flag:$AGENT_TYPE_05$
		}
		## Agent type 06.
		save_scope_value_as = {
			name = agent_type_06
			value = flag:$AGENT_TYPE_06$
		}
		## Agent type 07.
		save_scope_value_as = {
			name = agent_type_07
			value = flag:$AGENT_TYPE_07$
		}
		## Agent type 08.
		save_scope_value_as = {
			name = agent_type_08
			value = flag:$AGENT_TYPE_08$
		}
		## Agent type 09.
		save_scope_value_as = {
			name = agent_type_09
			value = flag:$AGENT_TYPE_09$
		}
		## Agent type 10.
		save_scope_value_as = {
			name = agent_type_10
			value = flag:$AGENT_TYPE_10$
		}
		## Agent type 11.
		save_scope_value_as = {
			name = agent_type_11
			value = flag:$AGENT_TYPE_11$
		}
		## Agent type 12.
		save_scope_value_as = {
			name = agent_type_12
			value = flag:$AGENT_TYPE_12$
		}
		## Agent type 13.
		save_scope_value_as = {
			name = agent_type_13
			value = flag:$AGENT_TYPE_13$
		}
		## Agent type 14.
		save_scope_value_as = {
			name = agent_type_14
			value = flag:$AGENT_TYPE_14$
		}
		## Agent type 15.
		save_scope_value_as = {
			name = agent_type_15
			value = flag:$AGENT_TYPE_15$
		}
		## Agent type 16.
		save_scope_value_as = {
			name = agent_type_16
			value = flag:$AGENT_TYPE_16$
		}
		## Agent type 17.
		save_scope_value_as = {
			name = agent_type_17
			value = flag:$AGENT_TYPE_17$
		}
		## Agent type 18.
		save_scope_value_as = {
			name = agent_type_18
			value = flag:$AGENT_TYPE_18$
		}
		# Then we roll for who's getting picked.
		## For var:choice_a.
		random_list = {
			# Agent type 01.
			0 = {
				trigger = {
					NOT = { scope:agent_type_01 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_01$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_01$
				}
				modifier = {
					add = $AGENT_TYPE_01_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_01$ }
				}
			}
			# Agent type 02.
			0 = {
				trigger = {
					NOT = { scope:agent_type_02 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_02$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_02$
				}
				modifier = {
					add = $AGENT_TYPE_02_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_02$ }
				}
			}
			# Agent type 03.
			0 = {
				trigger = {
					NOT = { scope:agent_type_03 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_03$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_03$
				}
				modifier = {
					add = $AGENT_TYPE_03_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_03$ }
				}
			}
			# Agent type 04.
			0 = {
				trigger = {
					NOT = { scope:agent_type_04 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_04$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_04$
				}
				modifier = {
					add = $AGENT_TYPE_04_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_04$ }
				}
			}
			# Agent type 05.
			0 = {
				trigger = {
					NOT = { scope:agent_type_05 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_05$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_05$
				}
				modifier = {
					add = $AGENT_TYPE_05_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_05$ }
				}
			}
			# Agent type 06.
			0 = {
				trigger = {
					NOT = { scope:agent_type_06 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_06$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_06$
				}
				modifier = {
					add = $AGENT_TYPE_06_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_06$ }
				}
			}
			# Agent type 07.
			0 = {
				trigger = {
					NOT = { scope:agent_type_07 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_07$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_07$
				}
				modifier = {
					add = $AGENT_TYPE_07_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_07$ }
				}
			}
			# Agent type 08.
			0 = {
				trigger = {
					NOT = { scope:agent_type_08 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_08$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_08$
				}
				modifier = {
					add = $AGENT_TYPE_08_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_08$ }
				}
			}
			# Agent type 09.
			0 = {
				trigger = {
					NOT = { scope:agent_type_09 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_09$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_09$
				}
				modifier = {
					add = $AGENT_TYPE_09_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_09$ }
				}
			}
			# Agent type 10.
			0 = {
				trigger = {
					NOT = { scope:agent_type_10 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_10$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_10$
				}
				modifier = {
					add = $AGENT_TYPE_10_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_10$ }
				}
			}
			# Agent type 11.
			0 = {
				trigger = {
					NOT = { scope:agent_type_11 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_11$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_11$
				}
				modifier = {
					add = $AGENT_TYPE_11_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_11$ }
				}
			}
			# Agent type 12.
			0 = {
				trigger = {
					NOT = { scope:agent_type_12 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_12$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_12$
				}
				modifier = {
					add = $AGENT_TYPE_12_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_12$ }
				}
			}
			# Agent type 13.
			0 = {
				trigger = {
					NOT = { scope:agent_type_13 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_13$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_13$
				}
				modifier = {
					add = $AGENT_TYPE_13_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_13$ }
				}
			}
			# Agent type 14.
			0 = {
				trigger = {
					NOT = { scope:agent_type_14 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_14$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_14$
				}
				modifier = {
					add = $AGENT_TYPE_14_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_14$ }
				}
			}
			# Agent type 15.
			0 = {
				trigger = {
					NOT = { scope:agent_type_15 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_15$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_15$
				}
				modifier = {
					add = $AGENT_TYPE_15_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_15$ }
				}
			}
			# Agent type 16.
			0 = {
				trigger = {
					NOT = { scope:agent_type_16 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_16$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_16$
				}
				modifier = {
					add = $AGENT_TYPE_16_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_16$ }
				}
			}
			# Agent type 17.
			0 = {
				trigger = {
					NOT = { scope:agent_type_17 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_17$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_17$
				}
				modifier = {
					add = $AGENT_TYPE_17_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_17$ }
				}
			}
			# Agent type 18.
			0 = {
				trigger = {
					NOT = { scope:agent_type_18 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_18$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_18$
				}
				modifier = {
					add = $AGENT_TYPE_18_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_18$ }
				}
			}
		}
		## And var:choice_b.
		random_list = {
			# Agent type 01.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_01 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_01$
					}
					scheme_owner = { can_have_$AGENT_TYPE_01$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_01$
				}
				modifier = {
					add = $AGENT_TYPE_01_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_01$ }
				}
			}
			# Agent type 02.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_02 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_02$
					}
					scheme_owner = { can_have_$AGENT_TYPE_02$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_02$
				}
				modifier = {
					add = $AGENT_TYPE_02_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_02$ }
				}
			}
			# Agent type 03.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_03 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_03$
					}
					scheme_owner = { can_have_$AGENT_TYPE_03$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_03$
				}
				modifier = {
					add = $AGENT_TYPE_03_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_03$ }
				}
			}
			# Agent type 04.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_04 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_04$
					}
					scheme_owner = { can_have_$AGENT_TYPE_04$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_04$
				}
				modifier = {
					add = $AGENT_TYPE_04_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_04$ }
				}
			}
			# Agent type 05.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_05 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_05$
					}
					scheme_owner = { can_have_$AGENT_TYPE_05$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_05$
				}
				modifier = {
					add = $AGENT_TYPE_05_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_05$ }
				}
			}
			# Agent type 06.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_06 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_06$
					}
					scheme_owner = { can_have_$AGENT_TYPE_06$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_06$
				}
				modifier = {
					add = $AGENT_TYPE_06_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_06$ }
				}
			}
			# Agent type 07.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_07 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_07$
					}
					scheme_owner = { can_have_$AGENT_TYPE_07$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_07$
				}
				modifier = {
					add = $AGENT_TYPE_07_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_07$ }
				}
			}
			# Agent type 08.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_08 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_08$
					}
					scheme_owner = { can_have_$AGENT_TYPE_08$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_08$
				}
				modifier = {
					add = $AGENT_TYPE_08_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_08$ }
				}
			}
			# Agent type 09.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_09 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_09$
					}
					scheme_owner = { can_have_$AGENT_TYPE_09$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_09$
				}
				modifier = {
					add = $AGENT_TYPE_09_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_09$ }
				}
			}
			# Agent type 10.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_10 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_10$
					}
					scheme_owner = { can_have_$AGENT_TYPE_10$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_10$
				}
				modifier = {
					add = $AGENT_TYPE_10_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_10$ }
				}
			}
			# Agent type 11.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_11 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_11$
					}
					scheme_owner = { can_have_$AGENT_TYPE_11$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_11$
				}
				modifier = {
					add = $AGENT_TYPE_11_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_11$ }
				}
			}
			# Agent type 12.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_12 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_12$
					}
					scheme_owner = { can_have_$AGENT_TYPE_12$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_12$
				}
				modifier = {
					add = $AGENT_TYPE_12_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_12$ }
				}
			}
			# Agent type 13.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_13 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_13$
					}
					scheme_owner = { can_have_$AGENT_TYPE_13$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_13$
				}
				modifier = {
					add = $AGENT_TYPE_13_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_13$ }
				}
			}
			# Agent type 14.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_14 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_14$
					}
					scheme_owner = { can_have_$AGENT_TYPE_14$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_14$
				}
				modifier = {
					add = $AGENT_TYPE_14_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_14$ }
				}
			}
			# Agent type 15.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_15 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_15$
					}
					scheme_owner = { can_have_$AGENT_TYPE_15$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_15$
				}
				modifier = {
					add = $AGENT_TYPE_15_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_15$ }
				}
			}
			# Agent type 16.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_16 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_16$
					}
					scheme_owner = { can_have_$AGENT_TYPE_16$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_16$
				}
				modifier = {
					add = $AGENT_TYPE_16_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_16$ }
				}
			}
			# Agent type 17.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_17 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_17$
					}
					scheme_owner = { can_have_$AGENT_TYPE_17$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_17$
				}
				modifier = {
					add = $AGENT_TYPE_17_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_17$ }
				}
			}
			# Agent type 18.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_18 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_18$
					}
					scheme_owner = { can_have_$AGENT_TYPE_18$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_18$
				}
				modifier = {
					add = $AGENT_TYPE_18_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_18$ }
				}
			}
		}
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0001 }
	}
}
roll_critical_moment_options_19_agent_types_effect = {
	save_scope_as = scheme
	scope:scheme.task_contract ?= { save_scope_as = task_contract }
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:$OUTPUT_EVENT$
	}
	if = {
		limit = {
			any_scheme_agent_slot = { count < character_max_scheme_agents_value }
			scope:scheme = {
				NOR = {
					has_variable = choice_a
					has_variable = choice_b
				}
			}
		}
		# First, let's determine which types we're using and which we ain't.
		## Agent type 01.
		save_scope_value_as = {
			name = agent_type_01
			value = flag:$AGENT_TYPE_01$
		}
		## Agent type 02.
		save_scope_value_as = {
			name = agent_type_02
			value = flag:$AGENT_TYPE_02$
		}
		## Agent type 03.
		save_scope_value_as = {
			name = agent_type_03
			value = flag:$AGENT_TYPE_03$
		}
		## Agent type 04.
		save_scope_value_as = {
			name = agent_type_04
			value = flag:$AGENT_TYPE_04$
		}
		## Agent type 05.
		save_scope_value_as = {
			name = agent_type_05
			value = flag:$AGENT_TYPE_05$
		}
		## Agent type 06.
		save_scope_value_as = {
			name = agent_type_06
			value = flag:$AGENT_TYPE_06$
		}
		## Agent type 07.
		save_scope_value_as = {
			name = agent_type_07
			value = flag:$AGENT_TYPE_07$
		}
		## Agent type 08.
		save_scope_value_as = {
			name = agent_type_08
			value = flag:$AGENT_TYPE_08$
		}
		## Agent type 09.
		save_scope_value_as = {
			name = agent_type_09
			value = flag:$AGENT_TYPE_09$
		}
		## Agent type 10.
		save_scope_value_as = {
			name = agent_type_10
			value = flag:$AGENT_TYPE_10$
		}
		## Agent type 11.
		save_scope_value_as = {
			name = agent_type_11
			value = flag:$AGENT_TYPE_11$
		}
		## Agent type 12.
		save_scope_value_as = {
			name = agent_type_12
			value = flag:$AGENT_TYPE_12$
		}
		## Agent type 13.
		save_scope_value_as = {
			name = agent_type_13
			value = flag:$AGENT_TYPE_13$
		}
		## Agent type 14.
		save_scope_value_as = {
			name = agent_type_14
			value = flag:$AGENT_TYPE_14$
		}
		## Agent type 15.
		save_scope_value_as = {
			name = agent_type_15
			value = flag:$AGENT_TYPE_15$
		}
		## Agent type 16.
		save_scope_value_as = {
			name = agent_type_16
			value = flag:$AGENT_TYPE_16$
		}
		## Agent type 17.
		save_scope_value_as = {
			name = agent_type_17
			value = flag:$AGENT_TYPE_17$
		}
		## Agent type 18.
		save_scope_value_as = {
			name = agent_type_18
			value = flag:$AGENT_TYPE_18$
		}
		## Agent type 19.
		save_scope_value_as = {
			name = agent_type_19
			value = flag:$AGENT_TYPE_19$
		}
		# Then we roll for who's getting picked.
		## For var:choice_a.
		random_list = {
			# Agent type 01.
			0 = {
				trigger = {
					NOT = { scope:agent_type_01 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_01$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_01$
				}
				modifier = {
					add = $AGENT_TYPE_01_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_01$ }
				}
			}
			# Agent type 02.
			0 = {
				trigger = {
					NOT = { scope:agent_type_02 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_02$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_02$
				}
				modifier = {
					add = $AGENT_TYPE_02_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_02$ }
				}
			}
			# Agent type 03.
			0 = {
				trigger = {
					NOT = { scope:agent_type_03 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_03$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_03$
				}
				modifier = {
					add = $AGENT_TYPE_03_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_03$ }
				}
			}
			# Agent type 04.
			0 = {
				trigger = {
					NOT = { scope:agent_type_04 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_04$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_04$
				}
				modifier = {
					add = $AGENT_TYPE_04_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_04$ }
				}
			}
			# Agent type 05.
			0 = {
				trigger = {
					NOT = { scope:agent_type_05 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_05$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_05$
				}
				modifier = {
					add = $AGENT_TYPE_05_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_05$ }
				}
			}
			# Agent type 06.
			0 = {
				trigger = {
					NOT = { scope:agent_type_06 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_06$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_06$
				}
				modifier = {
					add = $AGENT_TYPE_06_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_06$ }
				}
			}
			# Agent type 07.
			0 = {
				trigger = {
					NOT = { scope:agent_type_07 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_07$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_07$
				}
				modifier = {
					add = $AGENT_TYPE_07_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_07$ }
				}
			}
			# Agent type 08.
			0 = {
				trigger = {
					NOT = { scope:agent_type_08 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_08$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_08$
				}
				modifier = {
					add = $AGENT_TYPE_08_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_08$ }
				}
			}
			# Agent type 09.
			0 = {
				trigger = {
					NOT = { scope:agent_type_09 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_09$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_09$
				}
				modifier = {
					add = $AGENT_TYPE_09_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_09$ }
				}
			}
			# Agent type 10.
			0 = {
				trigger = {
					NOT = { scope:agent_type_10 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_10$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_10$
				}
				modifier = {
					add = $AGENT_TYPE_10_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_10$ }
				}
			}
			# Agent type 11.
			0 = {
				trigger = {
					NOT = { scope:agent_type_11 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_11$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_11$
				}
				modifier = {
					add = $AGENT_TYPE_11_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_11$ }
				}
			}
			# Agent type 12.
			0 = {
				trigger = {
					NOT = { scope:agent_type_12 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_12$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_12$
				}
				modifier = {
					add = $AGENT_TYPE_12_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_12$ }
				}
			}
			# Agent type 13.
			0 = {
				trigger = {
					NOT = { scope:agent_type_13 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_13$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_13$
				}
				modifier = {
					add = $AGENT_TYPE_13_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_13$ }
				}
			}
			# Agent type 14.
			0 = {
				trigger = {
					NOT = { scope:agent_type_14 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_14$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_14$
				}
				modifier = {
					add = $AGENT_TYPE_14_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_14$ }
				}
			}
			# Agent type 15.
			0 = {
				trigger = {
					NOT = { scope:agent_type_15 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_15$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_15$
				}
				modifier = {
					add = $AGENT_TYPE_15_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_15$ }
				}
			}
			# Agent type 16.
			0 = {
				trigger = {
					NOT = { scope:agent_type_16 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_16$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_16$
				}
				modifier = {
					add = $AGENT_TYPE_16_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_16$ }
				}
			}
			# Agent type 17.
			0 = {
				trigger = {
					NOT = { scope:agent_type_17 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_17$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_17$
				}
				modifier = {
					add = $AGENT_TYPE_17_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_17$ }
				}
			}
			# Agent type 18.
			0 = {
				trigger = {
					NOT = { scope:agent_type_18 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_18$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_18$
				}
				modifier = {
					add = $AGENT_TYPE_18_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_18$ }
				}
			}
			# Agent type 19.
			0 = {
				trigger = {
					NOT = { scope:agent_type_19 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_19$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_19$
				}
				modifier = {
					add = $AGENT_TYPE_19_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_19$ }
				}
			}
		}
		## And var:choice_b.
		random_list = {
			# Agent type 01.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_01 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_01$
					}
					scheme_owner = { can_have_$AGENT_TYPE_01$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_01$
				}
				modifier = {
					add = $AGENT_TYPE_01_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_01$ }
				}
			}
			# Agent type 02.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_02 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_02$
					}
					scheme_owner = { can_have_$AGENT_TYPE_02$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_02$
				}
				modifier = {
					add = $AGENT_TYPE_02_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_02$ }
				}
			}
			# Agent type 03.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_03 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_03$
					}
					scheme_owner = { can_have_$AGENT_TYPE_03$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_03$
				}
				modifier = {
					add = $AGENT_TYPE_03_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_03$ }
				}
			}
			# Agent type 04.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_04 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_04$
					}
					scheme_owner = { can_have_$AGENT_TYPE_04$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_04$
				}
				modifier = {
					add = $AGENT_TYPE_04_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_04$ }
				}
			}
			# Agent type 05.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_05 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_05$
					}
					scheme_owner = { can_have_$AGENT_TYPE_05$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_05$
				}
				modifier = {
					add = $AGENT_TYPE_05_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_05$ }
				}
			}
			# Agent type 06.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_06 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_06$
					}
					scheme_owner = { can_have_$AGENT_TYPE_06$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_06$
				}
				modifier = {
					add = $AGENT_TYPE_06_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_06$ }
				}
			}
			# Agent type 07.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_07 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_07$
					}
					scheme_owner = { can_have_$AGENT_TYPE_07$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_07$
				}
				modifier = {
					add = $AGENT_TYPE_07_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_07$ }
				}
			}
			# Agent type 08.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_08 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_08$
					}
					scheme_owner = { can_have_$AGENT_TYPE_08$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_08$
				}
				modifier = {
					add = $AGENT_TYPE_08_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_08$ }
				}
			}
			# Agent type 09.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_09 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_09$
					}
					scheme_owner = { can_have_$AGENT_TYPE_09$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_09$
				}
				modifier = {
					add = $AGENT_TYPE_09_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_09$ }
				}
			}
			# Agent type 10.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_10 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_10$
					}
					scheme_owner = { can_have_$AGENT_TYPE_10$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_10$
				}
				modifier = {
					add = $AGENT_TYPE_10_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_10$ }
				}
			}
			# Agent type 11.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_11 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_11$
					}
					scheme_owner = { can_have_$AGENT_TYPE_11$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_11$
				}
				modifier = {
					add = $AGENT_TYPE_11_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_11$ }
				}
			}
			# Agent type 12.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_12 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_12$
					}
					scheme_owner = { can_have_$AGENT_TYPE_12$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_12$
				}
				modifier = {
					add = $AGENT_TYPE_12_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_12$ }
				}
			}
			# Agent type 13.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_13 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_13$
					}
					scheme_owner = { can_have_$AGENT_TYPE_13$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_13$
				}
				modifier = {
					add = $AGENT_TYPE_13_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_13$ }
				}
			}
			# Agent type 14.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_14 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_14$
					}
					scheme_owner = { can_have_$AGENT_TYPE_14$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_14$
				}
				modifier = {
					add = $AGENT_TYPE_14_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_14$ }
				}
			}
			# Agent type 15.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_15 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_15$
					}
					scheme_owner = { can_have_$AGENT_TYPE_15$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_15$
				}
				modifier = {
					add = $AGENT_TYPE_15_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_15$ }
				}
			}
			# Agent type 16.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_16 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_16$
					}
					scheme_owner = { can_have_$AGENT_TYPE_16$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_16$
				}
				modifier = {
					add = $AGENT_TYPE_16_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_16$ }
				}
			}
			# Agent type 17.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_17 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_17$
					}
					scheme_owner = { can_have_$AGENT_TYPE_17$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_17$
				}
				modifier = {
					add = $AGENT_TYPE_17_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_17$ }
				}
			}
			# Agent type 18.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_18 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_18$
					}
					scheme_owner = { can_have_$AGENT_TYPE_18$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_18$
				}
				modifier = {
					add = $AGENT_TYPE_18_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_18$ }
				}
			}
			# Agent type 19.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_19 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_19$
					}
					scheme_owner = { can_have_$AGENT_TYPE_19$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_19$
				}
				modifier = {
					add = $AGENT_TYPE_19_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_19$ }
				}
			}
		}
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0001 }
	}
}
roll_critical_moment_options_20_agent_types_effect = {
	save_scope_as = scheme
	scope:scheme.task_contract ?= { save_scope_as = task_contract }
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:$OUTPUT_EVENT$
	}
	if = {
		limit = {
			any_scheme_agent_slot = { count < character_max_scheme_agents_value }
			scope:scheme = {
				NOR = {
					has_variable = choice_a
					has_variable = choice_b
				}
			}
		}
		# First, let's determine which types we're using and which we ain't.
		## Agent type 01.
		save_scope_value_as = {
			name = agent_type_01
			value = flag:$AGENT_TYPE_01$
		}
		## Agent type 02.
		save_scope_value_as = {
			name = agent_type_02
			value = flag:$AGENT_TYPE_02$
		}
		## Agent type 03.
		save_scope_value_as = {
			name = agent_type_03
			value = flag:$AGENT_TYPE_03$
		}
		## Agent type 04.
		save_scope_value_as = {
			name = agent_type_04
			value = flag:$AGENT_TYPE_04$
		}
		## Agent type 05.
		save_scope_value_as = {
			name = agent_type_05
			value = flag:$AGENT_TYPE_05$
		}
		## Agent type 06.
		save_scope_value_as = {
			name = agent_type_06
			value = flag:$AGENT_TYPE_06$
		}
		## Agent type 07.
		save_scope_value_as = {
			name = agent_type_07
			value = flag:$AGENT_TYPE_07$
		}
		## Agent type 08.
		save_scope_value_as = {
			name = agent_type_08
			value = flag:$AGENT_TYPE_08$
		}
		## Agent type 09.
		save_scope_value_as = {
			name = agent_type_09
			value = flag:$AGENT_TYPE_09$
		}
		## Agent type 10.
		save_scope_value_as = {
			name = agent_type_10
			value = flag:$AGENT_TYPE_10$
		}
		## Agent type 11.
		save_scope_value_as = {
			name = agent_type_11
			value = flag:$AGENT_TYPE_11$
		}
		## Agent type 12.
		save_scope_value_as = {
			name = agent_type_12
			value = flag:$AGENT_TYPE_12$
		}
		## Agent type 13.
		save_scope_value_as = {
			name = agent_type_13
			value = flag:$AGENT_TYPE_13$
		}
		## Agent type 14.
		save_scope_value_as = {
			name = agent_type_14
			value = flag:$AGENT_TYPE_14$
		}
		## Agent type 15.
		save_scope_value_as = {
			name = agent_type_15
			value = flag:$AGENT_TYPE_15$
		}
		## Agent type 16.
		save_scope_value_as = {
			name = agent_type_16
			value = flag:$AGENT_TYPE_16$
		}
		## Agent type 17.
		save_scope_value_as = {
			name = agent_type_17
			value = flag:$AGENT_TYPE_17$
		}
		## Agent type 18.
		save_scope_value_as = {
			name = agent_type_18
			value = flag:$AGENT_TYPE_18$
		}
		## Agent type 19.
		save_scope_value_as = {
			name = agent_type_19
			value = flag:$AGENT_TYPE_19$
		}
		## Agent type 20.
		save_scope_value_as = {
			name = agent_type_20
			value = flag:$AGENT_TYPE_20$
		}
		# Then we roll for who's getting picked.
		## For var:choice_a.
		random_list = {
			# Agent type 01.
			0 = {
				trigger = {
					NOT = { scope:agent_type_01 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_01$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_01$
				}
				modifier = {
					add = $AGENT_TYPE_01_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_01$ }
				}
			}
			# Agent type 02.
			0 = {
				trigger = {
					NOT = { scope:agent_type_02 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_02$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_02$
				}
				modifier = {
					add = $AGENT_TYPE_02_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_02$ }
				}
			}
			# Agent type 03.
			0 = {
				trigger = {
					NOT = { scope:agent_type_03 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_03$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_03$
				}
				modifier = {
					add = $AGENT_TYPE_03_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_03$ }
				}
			}
			# Agent type 04.
			0 = {
				trigger = {
					NOT = { scope:agent_type_04 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_04$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_04$
				}
				modifier = {
					add = $AGENT_TYPE_04_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_04$ }
				}
			}
			# Agent type 05.
			0 = {
				trigger = {
					NOT = { scope:agent_type_05 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_05$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_05$
				}
				modifier = {
					add = $AGENT_TYPE_05_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_05$ }
				}
			}
			# Agent type 06.
			0 = {
				trigger = {
					NOT = { scope:agent_type_06 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_06$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_06$
				}
				modifier = {
					add = $AGENT_TYPE_06_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_06$ }
				}
			}
			# Agent type 07.
			0 = {
				trigger = {
					NOT = { scope:agent_type_07 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_07$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_07$
				}
				modifier = {
					add = $AGENT_TYPE_07_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_07$ }
				}
			}
			# Agent type 08.
			0 = {
				trigger = {
					NOT = { scope:agent_type_08 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_08$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_08$
				}
				modifier = {
					add = $AGENT_TYPE_08_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_08$ }
				}
			}
			# Agent type 09.
			0 = {
				trigger = {
					NOT = { scope:agent_type_09 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_09$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_09$
				}
				modifier = {
					add = $AGENT_TYPE_09_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_09$ }
				}
			}
			# Agent type 10.
			0 = {
				trigger = {
					NOT = { scope:agent_type_10 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_10$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_10$
				}
				modifier = {
					add = $AGENT_TYPE_10_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_10$ }
				}
			}
			# Agent type 11.
			0 = {
				trigger = {
					NOT = { scope:agent_type_11 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_11$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_11$
				}
				modifier = {
					add = $AGENT_TYPE_11_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_11$ }
				}
			}
			# Agent type 12.
			0 = {
				trigger = {
					NOT = { scope:agent_type_12 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_12$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_12$
				}
				modifier = {
					add = $AGENT_TYPE_12_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_12$ }
				}
			}
			# Agent type 13.
			0 = {
				trigger = {
					NOT = { scope:agent_type_13 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_13$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_13$
				}
				modifier = {
					add = $AGENT_TYPE_13_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_13$ }
				}
			}
			# Agent type 14.
			0 = {
				trigger = {
					NOT = { scope:agent_type_14 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_14$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_14$
				}
				modifier = {
					add = $AGENT_TYPE_14_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_14$ }
				}
			}
			# Agent type 15.
			0 = {
				trigger = {
					NOT = { scope:agent_type_15 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_15$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_15$
				}
				modifier = {
					add = $AGENT_TYPE_15_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_15$ }
				}
			}
			# Agent type 16.
			0 = {
				trigger = {
					NOT = { scope:agent_type_16 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_16$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_16$
				}
				modifier = {
					add = $AGENT_TYPE_16_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_16$ }
				}
			}
			# Agent type 17.
			0 = {
				trigger = {
					NOT = { scope:agent_type_17 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_17$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_17$
				}
				modifier = {
					add = $AGENT_TYPE_17_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_17$ }
				}
			}
			# Agent type 18.
			0 = {
				trigger = {
					NOT = { scope:agent_type_18 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_18$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_18$
				}
				modifier = {
					add = $AGENT_TYPE_18_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_18$ }
				}
			}
			# Agent type 19.
			0 = {
				trigger = {
					NOT = { scope:agent_type_19 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_19$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_19$
				}
				modifier = {
					add = $AGENT_TYPE_19_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_19$ }
				}
			}
			# Agent type 20.
			0 = {
				trigger = {
					NOT = { scope:agent_type_20 = flag:empty }
					scheme_owner = { can_have_$AGENT_TYPE_20$_trigger = yes }
				}
				set_variable = {
					name = choice_a
					value = flag:$AGENT_TYPE_20$
				}
				modifier = {
					add = $AGENT_TYPE_20_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_20$ }
				}
			}
		}
		## And var:choice_b.
		random_list = {
			# Agent type 01.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_01 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_01$
					}
					scheme_owner = { can_have_$AGENT_TYPE_01$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_01$
				}
				modifier = {
					add = $AGENT_TYPE_01_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_01$ }
				}
			}
			# Agent type 02.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_02 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_02$
					}
					scheme_owner = { can_have_$AGENT_TYPE_02$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_02$
				}
				modifier = {
					add = $AGENT_TYPE_02_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_02$ }
				}
			}
			# Agent type 03.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_03 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_03$
					}
					scheme_owner = { can_have_$AGENT_TYPE_03$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_03$
				}
				modifier = {
					add = $AGENT_TYPE_03_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_03$ }
				}
			}
			# Agent type 04.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_04 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_04$
					}
					scheme_owner = { can_have_$AGENT_TYPE_04$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_04$
				}
				modifier = {
					add = $AGENT_TYPE_04_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_04$ }
				}
			}
			# Agent type 05.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_05 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_05$
					}
					scheme_owner = { can_have_$AGENT_TYPE_05$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_05$
				}
				modifier = {
					add = $AGENT_TYPE_05_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_05$ }
				}
			}
			# Agent type 06.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_06 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_06$
					}
					scheme_owner = { can_have_$AGENT_TYPE_06$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_06$
				}
				modifier = {
					add = $AGENT_TYPE_06_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_06$ }
				}
			}
			# Agent type 07.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_07 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_07$
					}
					scheme_owner = { can_have_$AGENT_TYPE_07$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_07$
				}
				modifier = {
					add = $AGENT_TYPE_07_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_07$ }
				}
			}
			# Agent type 08.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_08 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_08$
					}
					scheme_owner = { can_have_$AGENT_TYPE_08$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_08$
				}
				modifier = {
					add = $AGENT_TYPE_08_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_08$ }
				}
			}
			# Agent type 09.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_09 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_09$
					}
					scheme_owner = { can_have_$AGENT_TYPE_09$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_09$
				}
				modifier = {
					add = $AGENT_TYPE_09_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_09$ }
				}
			}
			# Agent type 10.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_10 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_10$
					}
					scheme_owner = { can_have_$AGENT_TYPE_10$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_10$
				}
				modifier = {
					add = $AGENT_TYPE_10_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_10$ }
				}
			}
			# Agent type 11.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_11 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_11$
					}
					scheme_owner = { can_have_$AGENT_TYPE_11$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_11$
				}
				modifier = {
					add = $AGENT_TYPE_11_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_11$ }
				}
			}
			# Agent type 12.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_12 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_12$
					}
					scheme_owner = { can_have_$AGENT_TYPE_12$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_12$
				}
				modifier = {
					add = $AGENT_TYPE_12_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_12$ }
				}
			}
			# Agent type 13.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_13 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_13$
					}
					scheme_owner = { can_have_$AGENT_TYPE_13$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_13$
				}
				modifier = {
					add = $AGENT_TYPE_13_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_13$ }
				}
			}
			# Agent type 14.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_14 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_14$
					}
					scheme_owner = { can_have_$AGENT_TYPE_14$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_14$
				}
				modifier = {
					add = $AGENT_TYPE_14_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_14$ }
				}
			}
			# Agent type 15.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_15 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_15$
					}
					scheme_owner = { can_have_$AGENT_TYPE_15$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_15$
				}
				modifier = {
					add = $AGENT_TYPE_15_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_15$ }
				}
			}
			# Agent type 16.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_16 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_16$
					}
					scheme_owner = { can_have_$AGENT_TYPE_16$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_16$
				}
				modifier = {
					add = $AGENT_TYPE_16_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_16$ }
				}
			}
			# Agent type 17.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_17 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_17$
					}
					scheme_owner = { can_have_$AGENT_TYPE_17$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_17$
				}
				modifier = {
					add = $AGENT_TYPE_17_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_17$ }
				}
			}
			# Agent type 18.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_18 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_18$
					}
					scheme_owner = { can_have_$AGENT_TYPE_18$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_18$
				}
				modifier = {
					add = $AGENT_TYPE_18_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_18$ }
				}
			}
			# Agent type 19.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_19 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_19$
					}
					scheme_owner = { can_have_$AGENT_TYPE_19$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_19$
				}
				modifier = {
					add = $AGENT_TYPE_19_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_19$ }
				}
			}
			# Agent type 20.
			0 = {
				trigger = {
					NOR = {
						scope:agent_type_20 = flag:empty
						var:choice_a = flag:$AGENT_TYPE_20$
					}
					scheme_owner = { can_have_$AGENT_TYPE_20$_trigger = yes }
				}
				set_variable = {
					name = choice_b
					value = flag:$AGENT_TYPE_20$
				}
				modifier = {
					add = $AGENT_TYPE_20_WEIGHT$
					always = yes
				}
				modifier = {
					factor = weight_down_existing_agent_slots_value
					any_scheme_agent_slot = { is_agent_slot_type = $AGENT_TYPE_20$ }
				}
			}
		}
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0001 }
	}
}

# Add an agent type to a scheme.
## When you add a new agent type, add them to the bottom of this effect. Everything else should be taken care of automatically.
select_critical_moment_agents_effect = {
	if = {
		limit = { $CHOICE$ = flag:agent_assassin }
		scope:scheme = { add_agent_slot = agent_assassin }
		# Error suppression.
		save_scope_value_as = {
			name = $CHOICE$
			value = flag:agent_assassin
		}
	}
	else_if = {
		limit = { $CHOICE$ = flag:agent_lookout }
		scope:scheme = { add_agent_slot = agent_lookout }
		# Error suppression.
		save_scope_value_as = {
			name = $CHOICE$
			value = flag:agent_lookout
		}
	}
	else_if = {
		limit = { $CHOICE$ = flag:agent_infiltrator }
		scope:scheme = { add_agent_slot = agent_infiltrator }
		# Error suppression.
		save_scope_value_as = {
			name = $CHOICE$
			value = flag:agent_infiltrator
		}
	}
	else_if = {
		limit = { $CHOICE$ = flag:agent_footpad }
		scope:scheme = { add_agent_slot = agent_footpad }
		# Error suppression.
		save_scope_value_as = {
			name = $CHOICE$
			value = flag:agent_footpad
		}
	}
	else_if = {
		limit = { $CHOICE$ = flag:agent_alibi }
		scope:scheme = { add_agent_slot = agent_alibi }
		# Error suppression.
		save_scope_value_as = {
			name = $CHOICE$
			value = flag:agent_alibi
		}
	}
	else_if = {
		limit = { $CHOICE$ = flag:agent_thug }
		scope:scheme = { add_agent_slot = agent_thug }
		# Error suppression.
		save_scope_value_as = {
			name = $CHOICE$
			value = flag:agent_thug
		}
	}
	else_if = {
		limit = { $CHOICE$ = flag:agent_comrade_in_arms }
		scope:scheme = { add_agent_slot = agent_comrade_in_arms }
		# Error suppression.
		save_scope_value_as = {
			name = $CHOICE$
			value = flag:agent_comrade_in_arms
		}
	}
	else_if = {
		limit = { $CHOICE$ = flag:agent_socialite }
		scope:scheme = { add_agent_slot = agent_socialite }
		# Error suppression.
		save_scope_value_as = {
			name = $CHOICE$
			value = flag:agent_socialite
		}
	}
	else_if = {
		limit = { $CHOICE$ = flag:agent_musician }
		scope:scheme = { add_agent_slot = agent_musician }
		# Error suppression.
		save_scope_value_as = {
			name = $CHOICE$
			value = flag:agent_musician
		}
	}
	else_if = {
		limit = { $CHOICE$ = flag:agent_tumbler }
		scope:scheme = { add_agent_slot = agent_tumbler }
		# Error suppression.
		save_scope_value_as = {
			name = $CHOICE$
			value = flag:agent_tumbler
		}
	}
	else_if = {
		limit = { $CHOICE$ = flag:agent_poet }
		scope:scheme = { add_agent_slot = agent_poet }
		# Error suppression.
		save_scope_value_as = {
			name = $CHOICE$
			value = flag:agent_poet
		}
	}
	else_if = {
		limit = { $CHOICE$ = flag:agent_gabbler }
		scope:scheme = { add_agent_slot = agent_gabbler }
		# Error suppression.
		save_scope_value_as = {
			name = $CHOICE$
			value = flag:agent_gabbler
		}
	}
	else_if = {
		limit = { $CHOICE$ = flag:agent_shill }
		scope:scheme = { add_agent_slot = agent_shill }
		# Error suppression.
		save_scope_value_as = {
			name = $CHOICE$
			value = flag:agent_shill
		}
	}
	else_if = {
		limit = { $CHOICE$ = flag:agent_diplomat }
		scope:scheme = { add_agent_slot = agent_diplomat }
		# Error suppression.
		save_scope_value_as = {
			name = $CHOICE$
			value = flag:agent_diplomat
		}
	}
	else_if = {
		limit = { $CHOICE$ = flag:agent_justiciar }
		scope:scheme = { add_agent_slot = agent_justiciar }
		# Error suppression.
		save_scope_value_as = {
			name = $CHOICE$
			value = flag:agent_justiciar
		}
	}
	else_if = {
		limit = { $CHOICE$ = flag:agent_scribe }
		scope:scheme = { add_agent_slot = agent_scribe }
		# Error suppression.
		save_scope_value_as = {
			name = $CHOICE$
			value = flag:agent_scribe
		}
	}
	else_if = {
		limit = { $CHOICE$ = flag:agent_cleric }
		scope:scheme = { add_agent_slot = agent_cleric }
		# Error suppression.
		save_scope_value_as = {
			name = $CHOICE$
			value = flag:agent_cleric
		}
	}
	else_if = {
		limit = { $CHOICE$ = flag:agent_theologian }
		scope:scheme = { add_agent_slot = agent_theologian }
		# Error suppression.
		save_scope_value_as = {
			name = $CHOICE$
			value = flag:agent_theologian
		}
	}
	else_if = {
		limit = { $CHOICE$ = flag:agent_herald }
		scope:scheme = { add_agent_slot = agent_herald }
		# Error suppression.
		save_scope_value_as = {
			name = $CHOICE$
			value = flag:agent_herald
		}
	}
	else_if = {
		limit = { $CHOICE$ = flag:agent_wolf_hunter }
		scope:scheme = { add_agent_slot = agent_wolf_hunter }
		# Error suppression.
		save_scope_value_as = {
			name = $CHOICE$
			value = flag:agent_wolf_hunter
		}
	}
	else_if = {
		limit = { $CHOICE$ = flag:agent_thief }
		scope:scheme = { add_agent_slot = agent_thief }
		# Error suppression.
		save_scope_value_as = {
			name = $CHOICE$
			value = flag:agent_thief
		}
	}
	else_if = {
		limit = { $CHOICE$ = flag:agent_tutor }
		scope:scheme = { add_agent_slot = agent_tutor }
		# Error suppression.
		save_scope_value_as = {
			name = $CHOICE$
			value = flag:agent_tutor
		}
	}
	else_if = {
		limit = { $CHOICE$ = flag:agent_poisoner }
		scope:scheme = { add_agent_slot = agent_poisoner }
		# Error suppression.
		save_scope_value_as = {
			name = $CHOICE$
			value = flag:agent_poisoner
		}
	}
	else_if = {
		limit = { $CHOICE$ = flag:agent_eunuch }
		scope:scheme = { add_agent_slot = agent_eunuch }
		# Error suppression.
		save_scope_value_as = {
			name = $CHOICE$
			value = flag:agent_eunuch
		}
	}
	else_if = {
		limit = { $CHOICE$ = flag:agent_decoy }
		scope:scheme = { add_agent_slot = agent_decoy }
		# Error suppression.
		save_scope_value_as = {
			name = $CHOICE$
			value = flag:agent_decoy
		}
	}
	else_if = {
		limit = { $CHOICE$ = flag:agent_muscle }
		scope:scheme = { add_agent_slot = agent_muscle }
		# Error suppression.
		save_scope_value_as = {
			name = $CHOICE$
			value = flag:agent_muscle
		}
	}
	else_if = {
		limit = { $CHOICE$ = flag:agent_drillmaster }
		scope:scheme = { add_agent_slot = agent_drillmaster }
		# Error suppression.
		save_scope_value_as = {
			name = $CHOICE$
			value = flag:agent_drillmaster
		}
	}
	else_if = {
		limit = { $CHOICE$ = flag:agent_tracker }
		scope:scheme = { add_agent_slot = agent_tracker }
		# Error suppression.
		save_scope_value_as = {
			name = $CHOICE$
			value = flag:agent_tracker
		}
	}
	else_if = {
		limit = { $CHOICE$ = flag:agent_physic }
		scope:scheme = { add_agent_slot = agent_physic }
		# Error suppression.
		save_scope_value_as = {
			name = $CHOICE$
			value = flag:agent_physic
		}
	}
	else_if = {
		limit = { $CHOICE$ = flag:agent_smith }
		scope:scheme = { add_agent_slot = agent_smith }
		# Error suppression.
		save_scope_value_as = {
			name = $CHOICE$
			value = flag:agent_smith
		}
	}
	else_if = {
		limit = { $CHOICE$ = flag:agent_ambusher }
		scope:scheme = { add_agent_slot = agent_ambusher }
		# Error suppression.
		save_scope_value_as = {
			name = $CHOICE$
			value = flag:agent_ambusher
		}
	}
	else_if = {
		limit = { $CHOICE$ = flag:agent_bodyguard }
		scope:scheme = { add_agent_slot = agent_bodyguard }
		# Error suppression.
		save_scope_value_as = {
			name = $CHOICE$
			value = flag:agent_bodyguard
		}
	}
	else_if = {
		limit = { $CHOICE$ = flag:agent_scout }
		scope:scheme = { add_agent_slot = agent_scout }
		# Error suppression.
		save_scope_value_as = {
			name = $CHOICE$
			value = flag:agent_scout
		}
	}
	else_if = {
		limit = { $CHOICE$ = flag:agent_outrider }
		scope:scheme = { add_agent_slot = agent_outrider }
		# Error suppression.
		save_scope_value_as = {
			name = $CHOICE$
			value = flag:agent_outrider
		}
	}
	else_if = {
		limit = { $CHOICE$ = flag:agent_bookkeeper }
		scope:scheme = { add_agent_slot = agent_bookkeeper }
		# Error suppression.
		save_scope_value_as = {
			name = $CHOICE$
			value = flag:agent_bookkeeper
		}
	}
	else_if = {
		limit = { $CHOICE$ = flag:agent_bailiff }
		scope:scheme = { add_agent_slot = agent_bailiff }
		# Error suppression.
		save_scope_value_as = {
			name = $CHOICE$
			value = flag:agent_bailiff
		}
	}
	else_if = {
		limit = { $CHOICE$ = flag:agent_draughtsman }
		scope:scheme = { add_agent_slot = agent_draughtsman }
		# Error suppression.
		save_scope_value_as = {
			name = $CHOICE$
			value = flag:agent_draughtsman
		}
	}
	else_if = {
		limit = { $CHOICE$ = flag:agent_planner }
		scope:scheme = { add_agent_slot = agent_planner }
		# Error suppression.
		save_scope_value_as = {
			name = $CHOICE$
			value = flag:agent_planner
		}
	}
	else_if = {
		limit = { $CHOICE$ = flag:agent_supplier }
		scope:scheme = { add_agent_slot = agent_supplier }
		# Error suppression.
		save_scope_value_as = {
			name = $CHOICE$
			value = flag:agent_supplier
		}
	}
	else_if = {
		limit = { $CHOICE$ = flag:agent_outcast }
		scope:scheme = { add_agent_slot = agent_outcast }
		# Error suppression.
		save_scope_value_as = {
			name = $CHOICE$
			value = flag:agent_outcast
		}
	}
	else_if = {
		limit = { $CHOICE$ = flag:agent_wrangler }
		scope:scheme = { add_agent_slot = agent_wrangler }
		# Error suppression.
		save_scope_value_as = {
			name = $CHOICE$
			value = flag:agent_wrangler
		}
	}
	else_if = {
		limit = { $CHOICE$ = flag:agent_wrangler_speed }
		scope:scheme = { add_agent_slot = agent_wrangler_speed }
		# Error suppression.
		save_scope_value_as = {
			name = $CHOICE$
			value = flag:agent_wrangler_speed
		}
	}
	else_if = {
		limit = { $CHOICE$ = flag:agent_theologian_success }
		scope:scheme = { add_agent_slot = agent_theologian_success }
		# Error suppression.
		save_scope_value_as = {
			name = $CHOICE$
			value = flag:agent_theologian_success
		}
	}
	else_if = {
		limit = { $CHOICE$ = flag:agent_cleric_success }
		scope:scheme = { add_agent_slot = agent_cleric_success }
		# Error suppression.
		save_scope_value_as = {
			name = $CHOICE$
			value = flag:agent_cleric_success
		}
	}
	else_if = {
		limit = { $CHOICE$ = flag:agent_lookout_success }
		scope:scheme = { add_agent_slot = agent_lookout_success }
		# Error suppression.
		save_scope_value_as = {
			name = $CHOICE$
			value = flag:agent_lookout_success
		}
	}
	else_if = {
		limit = { $CHOICE$ = flag:agent_lookout_speed }
		scope:scheme = { add_agent_slot = agent_lookout_speed }
		# Error suppression.
		save_scope_value_as = {
			name = $CHOICE$
			value = flag:agent_lookout_speed
		}
	}
	# And remove the variables.
	scope:scheme = {
		remove_variable = choice_a
		remove_variable = choice_b
	}
}

# Stop schemes from overflowing with opportunities forever + tell the player when they should do something.
cap_schemes_and_fire_reminders_effect = {
	if = {
		limit = {
			scheme_agent_charges >= opportunity_cap_value
			scheme_success_chance >= max_scheme_success_chance
		}
		if = {
			limit = {
				scheme_owner = {
					is_ai = no
					NOR = {
						has_character_flag = scheme_critical_moments.0011
						has_variable = opportunities_reminder
					}
				}
			}
			scheme_owner = {
				add_character_flag = currently_in_scheme_reminder
				# supress the 'variable is used but is never set' error, the flag is set through code with the cooldown effect on the event, smh!
				if = {
					limit = {
						always = no
					}
					add_character_flag = scheme_critical_moments.0011
				}
			}
			switch = {
				trigger = scheme_type
				murder = {
					murder_scheme_prep_effect = yes
				}
				abduct = {
					abduct_scheme_prep_effect = yes
				}
				challenge_status = {
					challenge_status_scheme_prep_effect = yes
				}
				claim_throne = {
					claim_throne_scheme_prep_effect = yes
				}
				depose = {
					depose_scheme_prep_effect = yes
				}
				overthrow_regent = {
					overthrow_regent_scheme_prep_effect = yes
				}
				expand_power_base = {
					expand_power_base_scheme_prep_effect = yes
				}
				fabricate_hook = {
					fabricate_hook_scheme_prep_effect = yes
				}
				generate_claim = {
					generate_claim_scheme_prep_effect = yes
				}
				promote = {
					promote_scheme_prep_effect = yes
				}
				slander = {
					slander_scheme_prep_effect = yes
				}
				steal_back_artifact = {
					steal_back_artifact_scheme_prep_effect = yes
				}
				seize_realm = {
					seize_realm_scheme_prep_effect = yes
				}
				found_despotate = {
					found_despotate_scheme_prep_effect = yes
				}
				raid_estate = {
					raid_estate_scheme_prep_effect = yes
				}
				prepare_fire_dromons_scheme = {
					prepare_fire_dromons_scheme_prep_effect = yes
				}
				steal_herd = {
					steal_herd_scheme_prep_effect = yes
				}
				celestial_siphon_treasury = {
					celestial_siphon_treasury_prep_effect = yes
				}
				disbelieve_mandala = {
					disbelieve_mandala_scheme_prep_effect = yes
				}
				coerce_tributary = {
					coerce_tributary_scheme_prep_effect = yes
				}
			}
		}
		# If the player hasn't been reminded once, tell them that their scheme has hit max opportunities.
		scheme_owner = {
			if = {
				limit = {
					is_ai = no
					NOT = { has_variable = opportunities_reminder }
				}
				trigger_event = scheme_critical_moments.0011
			}
		}
	}
}

# Tell schemes to wait for the player's say-so before firing a follow-up event.
suppress_scheme_follow_up_event_till_input_given_effect = {
	save_scope_value_as = {
		name = suppress_next_event
		value = yes
	}
}

# Improve a certain type of modifier attached to the scheme, burning opportunities to do so.
improve_scheme_preparation_burnt_opportunities_modifier_effect = {
	# Cap us at 10.
	if = {
		limit = { has_scheme_modifier = $MODIFIER$_level_10 }
		# We should never be able to take the option at this point, but if we break it somehow, then do nothing rather than doubling up.
	}
	# 9 -> 10.
	else_if = {
		limit = { has_scheme_modifier = $MODIFIER$_level_09 }
		# Clean the previous level.
		hidden_effect = { remove_scheme_modifier = $MODIFIER$_level_09 }
		# Add the new one.
		add_scheme_modifier = { type = $MODIFIER$_level_10 }
	}
	# 8 -> 9.
	else_if = {
		limit = { has_scheme_modifier = $MODIFIER$_level_08 }
		# Clean the previous level.
		hidden_effect = { remove_scheme_modifier = $MODIFIER$_level_08 }
		# Add the new one.
		add_scheme_modifier = { type = $MODIFIER$_level_09 }
	}
	# 7 -> 8.
	else_if = {
		limit = { has_scheme_modifier = $MODIFIER$_level_07 }
		# Clean the previous level.
		hidden_effect = { remove_scheme_modifier = $MODIFIER$_level_07 }
		# Add the new one.
		add_scheme_modifier = { type = $MODIFIER$_level_08 }
	}
	# 6 -> 7.
	else_if = {
		limit = { has_scheme_modifier = $MODIFIER$_level_06 }
		# Clean the previous level.
		hidden_effect = { remove_scheme_modifier = $MODIFIER$_level_06 }
		# Add the new one.
		add_scheme_modifier = { type = $MODIFIER$_level_07 }
	}
	# 5 -> 6.
	else_if = {
		limit = { has_scheme_modifier = $MODIFIER$_level_05 }
		# Clean the previous level.
		hidden_effect = { remove_scheme_modifier = $MODIFIER$_level_05 }
		# Add the new one.
		add_scheme_modifier = { type = $MODIFIER$_level_06 }
	}
	# 4 -> 5.
	else_if = {
		limit = { has_scheme_modifier = $MODIFIER$_level_04 }
		# Clean the previous level.
		hidden_effect = { remove_scheme_modifier = $MODIFIER$_level_04 }
		# Add the new one.
		add_scheme_modifier = { type = $MODIFIER$_level_05 }
	}
	# 3 -> 4.
	else_if = {
		limit = { has_scheme_modifier = $MODIFIER$_level_03 }
		# Clean the previous level.
		hidden_effect = { remove_scheme_modifier = $MODIFIER$_level_03 }
		# Add the new one.
		add_scheme_modifier = { type = $MODIFIER$_level_04 }
	}
	# 2 -> 3.
	else_if = {
		limit = { has_scheme_modifier = $MODIFIER$_level_02 }
		# Clean the previous level.
		hidden_effect = { remove_scheme_modifier = $MODIFIER$_level_02 }
		# Add the new one.
		add_scheme_modifier = { type = $MODIFIER$_level_03 }
	}
	# 1 -> 2.
	else_if = {
		limit = { has_scheme_modifier = $MODIFIER$_level_01 }
		# Clean the previous level.
		hidden_effect = { remove_scheme_modifier = $MODIFIER$_level_01 }
		# Add the new one.
		add_scheme_modifier = { type = $MODIFIER$_level_02 }
	}
	# 0 -> 1.
	else = {
		# Add the first rung..
		add_scheme_modifier = { type = $MODIFIER$_level_01 }
	}
}

##################################################
# AI Usage Critical Moment Effects — Regular Schemes

murder_scheme_prep_effect = {
	save_scope_as = scheme
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.1001
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

seduce_scheme_prep_effect = {
	roll_critical_moment_options_07_agent_types_effect = {
		# Success results event.
		OUTPUT_EVENT = scheme_critical_moments.1011
		# Lookout
		AGENT_TYPE_01 = agent_lookout
		AGENT_TYPE_01_WEIGHT = critical_moment_agent_weight_high_value
		# Infiltrator
		AGENT_TYPE_02 = agent_infiltrator
		AGENT_TYPE_02_WEIGHT = critical_moment_agent_weight_high_value
		# Comrade_in_arms
		AGENT_TYPE_03 = agent_comrade_in_arms
		AGENT_TYPE_03_WEIGHT = critical_moment_agent_weight_high_value
		# Socialite
		AGENT_TYPE_04 = agent_socialite
		AGENT_TYPE_04_WEIGHT = critical_moment_agent_weight_medium_value
		# Musician
		AGENT_TYPE_05 = agent_musician
		AGENT_TYPE_05_WEIGHT = critical_moment_agent_weight_low_value
		# Tumbler
		AGENT_TYPE_06 = agent_tumbler
		AGENT_TYPE_06_WEIGHT = critical_moment_agent_weight_low_value
		# Poet
		AGENT_TYPE_07 = agent_poet
		AGENT_TYPE_07_WEIGHT = critical_moment_agent_weight_low_value
	}
}

abduct_scheme_prep_effect = {
	save_scope_as = scheme
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.1061
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

befriend_scheme_prep_effect = {
	roll_critical_moment_options_04_agent_types_effect = {
		# Success results event.
		OUTPUT_EVENT = scheme_critical_moments.1031
		# Socialite
		AGENT_TYPE_01 = agent_socialite
		AGENT_TYPE_01_WEIGHT = critical_moment_agent_weight_high_value
		# Infiltrator
		AGENT_TYPE_02 = agent_infiltrator
		AGENT_TYPE_02_WEIGHT = critical_moment_agent_weight_high_value
		# Gabbler
		AGENT_TYPE_03 = agent_gabbler
		AGENT_TYPE_03_WEIGHT = critical_moment_agent_weight_high_value
		# Shill
		AGENT_TYPE_04 = agent_shill
		AGENT_TYPE_04_WEIGHT = critical_moment_agent_weight_medium_value
	}
}

challenge_status_scheme_prep_effect = {
	save_scope_as = scheme
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.1171
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

claim_throne_scheme_prep_effect = {
	save_scope_as = scheme
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.1101
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

convert_to_witchcraft_scheme_prep_effect = {
	roll_critical_moment_options_03_agent_types_effect = {
		# Success results event.
		OUTPUT_EVENT = scheme_critical_moments.1121
		# Infiltrator
		AGENT_TYPE_01 = agent_infiltrator
		AGENT_TYPE_01_WEIGHT = critical_moment_agent_weight_high_value
		# Shill
		AGENT_TYPE_02 = agent_shill
		AGENT_TYPE_02_WEIGHT = critical_moment_agent_weight_high_value
		# Alibi
		AGENT_TYPE_03 = agent_alibi
		AGENT_TYPE_03_WEIGHT = critical_moment_agent_weight_high_value
	}
}

court_scheme_prep_effect = {
	roll_critical_moment_options_07_agent_types_effect = {
		# Success results event.
		OUTPUT_EVENT = scheme_critical_moments.1041
		# Herald
		AGENT_TYPE_01 = agent_herald
		AGENT_TYPE_01_WEIGHT = critical_moment_agent_weight_high_value
		# Comrade-in-Arms
		AGENT_TYPE_02 = agent_comrade_in_arms
		AGENT_TYPE_02_WEIGHT = critical_moment_agent_weight_high_value
		# Socialite
		AGENT_TYPE_03 = agent_socialite
		AGENT_TYPE_03_WEIGHT = critical_moment_agent_weight_high_value
		# Musician
		AGENT_TYPE_04 = agent_musician
		AGENT_TYPE_04_WEIGHT = critical_moment_agent_weight_very_low_value
		# Poet
		AGENT_TYPE_05 = agent_poet
		AGENT_TYPE_05_WEIGHT = critical_moment_agent_weight_very_low_value
		# Tumbler
		AGENT_TYPE_06 = agent_tumbler
		AGENT_TYPE_06_WEIGHT = critical_moment_agent_weight_very_low_value
		# Wolf Hunter
		AGENT_TYPE_07 = agent_wolf_hunter
		AGENT_TYPE_07_WEIGHT = critical_moment_agent_weight_microscopic_value
	}
}

damage_legitimacy_scheme_prep_effect = {
	roll_critical_moment_options_03_agent_types_effect = {
		# Success results event.
		OUTPUT_EVENT = scheme_critical_moments.4010
		# Infiltrator
		AGENT_TYPE_01 = agent_infiltrator
		AGENT_TYPE_01_WEIGHT = critical_moment_agent_weight_high_value
		# Diplomat
		AGENT_TYPE_02 = agent_diplomat
		AGENT_TYPE_02_WEIGHT = critical_moment_agent_weight_high_value
		# Socialite
		AGENT_TYPE_03 = agent_socialite
		AGENT_TYPE_03_WEIGHT = critical_moment_agent_weight_medium_value
	}
}

depose_scheme_prep_effect = {
	save_scope_as = scheme
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.1191
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

overthrow_regent_scheme_prep_effect = {
	save_scope_as = scheme
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.1091
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

elope_scheme_prep_effect = {
	roll_critical_moment_options_07_agent_types_effect = {
		# Success results event.
		OUTPUT_EVENT = scheme_critical_moments.1051
		# Infiltrator
		AGENT_TYPE_01 = agent_infiltrator
		AGENT_TYPE_01_WEIGHT = critical_moment_agent_weight_high_value
		# Comrade_in_arms
		AGENT_TYPE_02 = agent_comrade_in_arms
		AGENT_TYPE_02_WEIGHT = critical_moment_agent_weight_high_value
		# Socialite
		AGENT_TYPE_03 = agent_socialite
		AGENT_TYPE_03_WEIGHT = critical_moment_agent_weight_high_value
		# Alibi
		AGENT_TYPE_04 = agent_alibi
		AGENT_TYPE_04_WEIGHT = critical_moment_agent_weight_medium_value
		# Musician
		AGENT_TYPE_05 = agent_musician
		AGENT_TYPE_05_WEIGHT = critical_moment_agent_weight_very_low_value
		# Poet
		AGENT_TYPE_06 = agent_poet
		AGENT_TYPE_06_WEIGHT = critical_moment_agent_weight_very_low_value
		# Tumbler
		AGENT_TYPE_07 = agent_tumbler
		AGENT_TYPE_07_WEIGHT = critical_moment_agent_weight_very_low_value
	}
}

expand_power_base_scheme_prep_effect = {
	save_scope_as = scheme
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.1181
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

fabricate_hook_scheme_prep_effect = {
	save_scope_as = scheme
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.1071
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

foster_legitimacy_scheme_prep_effect = {
	roll_critical_moment_options_03_agent_types_effect = {
		# Success results event.
		OUTPUT_EVENT = scheme_critical_moments.4000
		
		# Herald
		AGENT_TYPE_01 = agent_herald
		AGENT_TYPE_01_WEIGHT = critical_moment_agent_weight_high_value
		# Diplomat
		AGENT_TYPE_02 = agent_diplomat
		AGENT_TYPE_02_WEIGHT = critical_moment_agent_weight_high_value
		# Socialite
		AGENT_TYPE_03 = agent_socialite
		AGENT_TYPE_03_WEIGHT = critical_moment_agent_weight_medium_value
	}
}

generate_claim_scheme_prep_effect = {
	save_scope_as = scheme
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.1151
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

learn_language_scheme_prep_effect = {
	roll_critical_moment_options_04_agent_types_effect = {
		# Success results event.
		OUTPUT_EVENT = scheme_critical_moments.1081
		# Diplomat
		AGENT_TYPE_01 = agent_diplomat
		AGENT_TYPE_01_WEIGHT = critical_moment_agent_weight_high_value
		# Cleric
		AGENT_TYPE_02 = agent_cleric
		AGENT_TYPE_02_WEIGHT = critical_moment_agent_weight_high_value
		# Scribe
		AGENT_TYPE_03 = agent_scribe
		AGENT_TYPE_03_WEIGHT = critical_moment_agent_weight_high_value
		# Tutor
		AGENT_TYPE_04 = agent_tutor
		AGENT_TYPE_04_WEIGHT = critical_moment_agent_weight_medium_value
	}
}

promote_scheme_prep_effect = {
	save_scope_as = scheme
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.1141
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

slander_scheme_prep_effect = {
	save_scope_as = scheme
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.1131
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

steal_back_artifact_scheme_prep_effect = {
	save_scope_as = scheme
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.1111
	}
	scope:scheme.var:target_artifact = {
		save_scope_as = artifact
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

steal_herd_scheme_prep_effect = {
	save_scope_as = scheme
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.1161
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

celestial_siphon_treasury_prep_effect = {
	save_scope_as = scheme
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.1201
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}	
}

celestial_movement_power_promote_prep_effect = {
	save_scope_as = scheme
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.1231
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}	
}

celestial_movement_power_slander_prep_effect = {
	save_scope_as = scheme
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.1234
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}	
}

sway_scheme_prep_effect = {
	roll_critical_moment_options_07_agent_types_effect = {
		# Success results event.
		OUTPUT_EVENT = scheme_critical_moments.1021
		# Herald
		AGENT_TYPE_01 = agent_herald
		AGENT_TYPE_01_WEIGHT = critical_moment_agent_weight_high_value
		# Diplomat
		AGENT_TYPE_02 = agent_diplomat
		AGENT_TYPE_02_WEIGHT = critical_moment_agent_weight_high_value
		# Gabbler
		AGENT_TYPE_03 = agent_gabbler
		AGENT_TYPE_03_WEIGHT = critical_moment_agent_weight_high_value
		# Shill
		AGENT_TYPE_04 = agent_shill
		AGENT_TYPE_04_WEIGHT = critical_moment_agent_weight_medium_value
		# Musician
		AGENT_TYPE_05 = agent_musician
		AGENT_TYPE_05_WEIGHT = critical_moment_agent_weight_low_value
		# Tumbler
		AGENT_TYPE_06 = agent_tumbler
		AGENT_TYPE_06_WEIGHT = critical_moment_agent_weight_low_value
		# Poet
		AGENT_TYPE_07 = agent_poet
		AGENT_TYPE_07_WEIGHT = critical_moment_agent_weight_low_value
	}
}

seize_realm_scheme_prep_effect = {
	save_scope_as = scheme
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.2901
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

found_despotate_scheme_prep_effect = {
	save_scope_as = scheme
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.8021
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

raid_estate_scheme_prep_effect = {
	save_scope_as = scheme
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.8035
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

ingratiate_family_scheme_prep_effect = {
	save_scope_as = scheme
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.8051 }
	}
}

prepare_fire_dromons_scheme_prep_effect = {
	save_scope_as = scheme
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.8060
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

disbelieve_mandala_scheme_prep_effect = {
	save_scope_as = scheme
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.1211
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

coerce_tributary_scheme_prep_effect = {
	save_scope_as = scheme
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.1221
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

coerce_contribution_scheme_prep_effect = {
	save_scope_as = scheme
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.1241
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

leverage_contribution_scheme_prep_effect = {
	save_scope_as = scheme
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.1251
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

##################################################
# AI Usage Critical Moment Effects — Contract Schemes

laamp_base_0001_contract_scheme_prep_effect = {
	save_scope_as = scheme
	scope:scheme.task_contract ?= { save_scope_as = task_contract }
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.2001
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

laamp_base_0011_contract_scheme_prep_effect = {
	save_scope_as = scheme
	scope:scheme.task_contract ?= { save_scope_as = task_contract }
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.2011
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

laamp_base_0021_contract_scheme_prep_effect = {
	save_scope_as = scheme
	scope:scheme.task_contract ?= { save_scope_as = task_contract }
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.2021
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

laamp_base_0031_contract_scheme_prep_effect = {
	save_scope_as = scheme
	scope:scheme.task_contract ?= { save_scope_as = task_contract }
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.2031
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

laamp_base_0041_contract_scheme_prep_effect = {
	save_scope_as = scheme
	scope:scheme.task_contract ?= { save_scope_as = task_contract }
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.2041
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

laamp_base_1001_contract_scheme_prep_effect = {
	save_scope_as = scheme
	scope:scheme.task_contract ?= { save_scope_as = task_contract }
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.2201
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

laamp_base_1011_contract_scheme_prep_effect = {
	save_scope_as = scheme
	scope:scheme.task_contract ?= { save_scope_as = task_contract }
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.2211
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

laamp_base_1021_contract_scheme_prep_effect = {
	save_scope_as = scheme
	scope:scheme.task_contract ?= { save_scope_as = task_contract }
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.2221
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

laamp_base_1031_contract_scheme_prep_effect = {
	save_scope_as = scheme
	scope:scheme.task_contract ?= { save_scope_as = task_contract }
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.2231
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

laamp_base_1041_contract_scheme_prep_effect = {
	save_scope_as = scheme
	scope:scheme.task_contract ?= { save_scope_as = task_contract }
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.2241
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

laamp_base_2001_contract_scheme_prep_effect = {
	save_scope_as = scheme
	scope:scheme.task_contract ?= { save_scope_as = task_contract }
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.2401
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

laamp_base_2011_contract_scheme_prep_effect = {
	save_scope_as = scheme
	scope:scheme.task_contract ?= { save_scope_as = task_contract }
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.2411
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

laamp_base_2021_contract_scheme_prep_effect = {
	save_scope_as = scheme
	scope:scheme.task_contract ?= { save_scope_as = task_contract }
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.2421
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

laamp_base_2031_contract_scheme_prep_effect = {
	save_scope_as = scheme
	scope:scheme.task_contract ?= { save_scope_as = task_contract }
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.2431
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

laamp_base_2041_contract_scheme_prep_effect = {
	save_scope_as = scheme
	scope:scheme.task_contract ?= { save_scope_as = task_contract }
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.2441
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

laamp_base_3001_contract_scheme_prep_effect = {
	save_scope_as = scheme
	scope:scheme.task_contract ?= { save_scope_as = task_contract }
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.2601
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

laamp_base_3011_contract_scheme_prep_effect = {
	save_scope_as = scheme
	scope:scheme.task_contract ?= { save_scope_as = task_contract }
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.2611
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

laamp_base_3021_contract_scheme_prep_effect = {
	save_scope_as = scheme
	scope:scheme.task_contract ?= { save_scope_as = task_contract }
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.2621
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

laamp_base_3031_contract_scheme_prep_effect = {
	save_scope_as = scheme
	scope:scheme.task_contract ?= { save_scope_as = task_contract }
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.2631
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

laamp_base_3041_contract_scheme_prep_effect = {
	save_scope_as = scheme
	scope:scheme.task_contract ?= { save_scope_as = task_contract }
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.2641
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

laamp_base_4001_contract_scheme_prep_effect = {
	save_scope_as = scheme
	scope:scheme.task_contract ?= { save_scope_as = task_contract }
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.2801
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

laamp_base_4011_contract_scheme_prep_effect = {
	save_scope_as = scheme
	scope:scheme.task_contract ?= { save_scope_as = task_contract }
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.2811
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

laamp_base_4021_contract_scheme_prep_effect = {
	save_scope_as = scheme
	scope:scheme.task_contract ?= { save_scope_as = task_contract }
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.2821
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

laamp_base_4031_contract_scheme_prep_effect = {
	save_scope_as = scheme
	scope:scheme.task_contract ?= { save_scope_as = task_contract }
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.2831
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

laamp_base_4041_contract_scheme_prep_effect = {
	save_scope_as = scheme
	scope:scheme.task_contract ?= { save_scope_as = task_contract }
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.2841
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

laamp_base_5001_contract_scheme_prep_effect = {
	save_scope_as = scheme
	scope:scheme.task_contract ?= { save_scope_as = task_contract }
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.3001
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

laamp_base_5011_contract_scheme_prep_effect = {
	save_scope_as = scheme
	scope:scheme.task_contract ?= { save_scope_as = task_contract }
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.3011
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

laamp_base_5021_contract_scheme_prep_effect = {
	save_scope_as = scheme
	scope:scheme.task_contract ?= { save_scope_as = task_contract }
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.3021
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

laamp_base_5031_contract_scheme_prep_effect = {
	save_scope_as = scheme
	scope:scheme.task_contract ?= { save_scope_as = task_contract }
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.3031
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

laamp_base_5041_contract_scheme_prep_effect = {
	save_scope_as = scheme
	scope:scheme.task_contract ?= { save_scope_as = task_contract }
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.3041
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

laamp_base_5051_contract_scheme_prep_effect = {
	save_scope_as = scheme
	scope:scheme.task_contract ?= { save_scope_as = task_contract }
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.3051
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

laamp_base_6001_contract_scheme_prep_effect = {
	save_scope_as = scheme
	scope:scheme.task_contract ?= { save_scope_as = task_contract }
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.6001
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

laamp_base_6011_contract_scheme_prep_effect = {
	save_scope_as = scheme
	scope:scheme.task_contract ?= { save_scope_as = task_contract }
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.6011
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

laamp_base_6021_contract_scheme_prep_effect = {
	save_scope_as = scheme
	scope:scheme.task_contract ?= { save_scope_as = task_contract }
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.6021
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

laamp_base_6031_contract_scheme_prep_effect = {
	save_scope_as = scheme
	scope:scheme.task_contract ?= { save_scope_as = task_contract }
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.6031
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

protect_minority_vassal_contract_diplomacy_scheme_prep_effect = {
	save_scope_as = scheme
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.3201
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

protect_minority_vassal_contract_martial_scheme_prep_effect = {
	save_scope_as = scheme
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.3201
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

protect_minority_vassal_contract_intrigue_scheme_prep_effect = {
	save_scope_as = scheme
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.3201
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

protect_minority_vassal_contract_learning_scheme_prep_effect = {
	save_scope_as = scheme
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.3201
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

laamp_prison_break_scheme_prep_effect = {
	save_scope_as = scheme
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.3211
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

laamp_help_find_secrets_scheme_prep_effect = {
	save_scope_as = scheme
	task_contract = {
		save_scope_as = task_contract
		var:task_contract_councillor = {
			save_scope_as = task_contract_councillor
		}
	}
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.3221
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

celestial_minister_find_secrets_scheme_prep_effect = {
	save_scope_as = scheme
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.8065
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

##################################################
# Murder Scheme Effects

# Give out the appropriate amount of dread when it's discovered the scoped char murdered someone.
murder_consequences_known_or_exposed_apply_dread_effect = {
	# Don't apply this twice if it's gone out earlier in the chain.
	if = {
		limit = {
			NOT = { exists = scope:murderer_dread_applied }
		}
		# Murdered own close family, king/emperor, or family of king/emperor.
		if = {
			limit = {
				OR = {
					is_close_family_of = $VICTIM$
					$VICTIM$ = {
						tier_or_related_liege_tier_greater_or_equal_trigger = { TIER = tier_kingdom }
					}
				}
			}
			add_dread = major_dread_gain
		}
		# Murdered close family of duke/count.
		else_if = {
			limit = {
				$VICTIM$ = {
					tier_or_related_liege_tier_greater_or_equal_trigger = { TIER = tier_county }
				}
			}
			add_dread = medium_dread_gain
		}
		# Murdered just... some guy. Just a person. Just a lil dude.
		else = { add_dread = minor_dread_gain }
		# And flag that we've gone through this.
		save_scope_value_as = {
			name = murderer_dread_applied
			value = yes
		}
	}
}

# Apply scope:owner's general ending & consequences.
scheme_owner_pov_murder_success_effect = {
	# Murdering your rival gets you some bonus cred.
	## Presumably in how you comport yourself & who's a thorn in your side.
	if = {
		limit = {
			scope:owner = { has_relation_rival = scope:target }
		}
		custom_tooltip = {
			text = murder_outcome_murdered_rival_tt
			add_prestige = medium_prestige_gain
		}
	}
	# Dread for successfully murdering someone and getting discovered.
	if = {
		limit = { exists = scope:scheme_discovered }
		murder_consequences_known_or_exposed_apply_dread_effect = { VICTIM = scope:target }
	}
	# Piety, if appropriate.
	if = {
		limit = {
			faith = { has_doctrine_parameter = piety_gain_from_successful_intrigue_schemes }
		}
		add_piety = minor_piety_gain
	}
	# Stress.
	## Murdered a rival.
	if = {
		limit = {
			scope:owner = { has_relation_rival = scope:target }
		}
		stress_impact = {
			base = murder_base_stress_value
			vengeful = massive_stress_impact_loss
			sadistic = minor_stress_impact_loss
			callous = miniscule_stress_impact_loss
			compassionate = minor_stress_impact_gain
			forgiving = major_stress_impact_gain
		}
	}
	## Murdered someone helpless.
	else_if = {
		limit = {
			scope:target = {
				OR = {
					is_adult = no
					is_incapable = yes
				}
			}
		}
		stress_impact = {
			base = murder_base_stress_value
			sadistic = major_stress_impact_loss
			callous = minor_stress_impact_loss
			compassionate = major_stress_impact_gain
		}
	}
	## Murdered anyone else.
	else = {
		stress_impact = {
			base = murder_base_stress_value
			sadistic = minor_stress_impact_loss
			callous = miniscule_stress_impact_loss
			compassionate = minor_stress_impact_gain
		}
	}
	# Aaaaand show our other consequences.
	show_as_tooltip = {
		murder_success_kill_effect = { REASON = $REASON$ }
	}
}

# Actually kill scope:target.
murder_success_kill_effect = {
	# If the scheme was discovered, reveal the murderer immediately.
	if = {
		limit = { exists = scope:scheme_discovered }
		# Kill the target.
		known_murder_effect = {
			VICTIM = scope:target
			MURDERER = scope:owner
			EXPOSER = scope:murder_exposer
		}
		# Kill them. Kill them all.
		murder_success_kill_entourage_too_effect = {
			KNOWN_UNKNOWN = known
			EXPOSER_REASON_PRE = EXPOSER
			EXPOSER_REASON_POST = scope:murder_exposer
			SHOW_UNKNOWN_ASSAILANT_TOOLTIP = no
		}
	}
	# Otherwise, we process this anonymously.
	else = {
		# For scope:owner, we only show the effects as tooltips.
		if = {
			limit = { this = scope:owner }
			show_as_tooltip = {
				unknown_murder_effect = {
					VICTIM = scope:target
					MURDERER = scope:owner
					REASON = $REASON$
				}
			}
			# Kill them. Kill them all.
			show_as_tooltip = {
				murder_success_kill_entourage_too_effect = {
					KNOWN_UNKNOWN = unknown
					EXPOSER_REASON_PRE = REASON
					EXPOSER_REASON_POST = death_mysterious
					SHOW_UNKNOWN_ASSAILANT_TOOLTIP = no
				}
			}
		}
		# Whereas for the target, we process the whole lot.
		else_if = {
			limit = { this = scope:target }
			custom_tooltip = murder_unknown_murder_against_you_was_successful
			hidden_effect = {
				unknown_murder_effect = {
					VICTIM = scope:target
					MURDERER = scope:owner
					REASON = $REASON$
				}
			}
			# Kill them. Kill them all.
			murder_success_kill_entourage_too_effect = {
				KNOWN_UNKNOWN = unknown
				EXPOSER_REASON_PRE = REASON
				EXPOSER_REASON_POST = death_mysterious
				SHOW_UNKNOWN_ASSAILANT_TOOLTIP = yes
			}
		}
	}
}

# If appropriate, kill off a bunch of the folks travelling with scope:target.
murder_success_kill_entourage_too_effect = {
	scope:owner ?= {
		if = {
			limit = { has_variable_list = entourage_members_to_kill }
			save_temporary_scope_value_as = {
				name = show_unknown_assailant_tooltip
				value = $SHOW_UNKNOWN_ASSAILANT_TOOLTIP$
			}
			every_in_list = {
				variable = entourage_members_to_kill
				save_temporary_scope_as = to_be_killed
				if = {
					limit = { scope:show_unknown_assailant_tooltip = yes }
					custom_tooltip = murder_unknown_murder_against_you_was_successful_other
				}
				$KNOWN_UNKNOWN$_murder_effect = {
					VICTIM = scope:to_be_killed
					MURDERER = scope:owner
					$EXPOSER_REASON_PRE$ = $EXPOSER_REASON_POST$
				}
			}
		}
	}
}

# Distribute murder failure effects.
murder_failure_effect = {
 	# Add Watchful Modifier to the target
	scope:target = {
		add_character_modifier = {
			modifier = watchful_modifier
			days = watchful_modifier_duration
		}
	}
	# If the attempt was discovered, process the consequences of that.
	if = {
		limit = { exists = scope:scheme_discovered }
		# If we're a clan this affects unity
		## Landed victims cost more unity.
		if = {
			limit = {
				scope:target = { is_landed = yes }
			}
			add_clan_unity_interaction_effect = {
				CHARACTER = scope:owner
				TARGET = scope:target
				VALUE = medium_unity_loss
				DESC = clan_unity_murder_attempted.desc
				REVERSE_NON_HOUSE_TARGET = no
			}
		}
		## For unlanded characters, we don't care as much, but you still lose some.
		else = {
			add_clan_unity_interaction_effect = {
				CHARACTER = scope:owner
				TARGET = scope:target
				VALUE = minor_unity_loss
				DESC = clan_unity_murder_attempted.desc
				REVERSE_NON_HOUSE_TARGET = no
			}
		}
		## Tag scope:owner with a separate scope for portraits...
		scope:owner = {
			save_scope_as = owner_to_reveal
			# ... and apply a little dread.
			add_dread = minor_dread_gain
		}
		## Point out that yeah, attempted murder will sour someone's opinion of you.
		attempted_murder_opinion_effect = {
			VICTIM = scope:target
			MURDERER = scope:owner
		}
	}
	# Otherwise, we just add a murder attempt secret.
	else = {
		# Make sure we don't inadvertently reveal the scheme to the target.
		if = {
			limit = { this = scope:owner }
			scope:owner = {
				add_secret = {
					type = secret_murder_attempt
					target = scope:target
				}
			}
		}
	}
	# Lastly, if our imaginary friend put us up to this, then we address that.
	scope:owner = {
		if = {
			limit = {
				any_owned_story = {
					type = story_cycle_imaginary_friend
					var:imaginary_friend_murder_target ?= scope:target
				}
			}
			trigger_event = {
				id = bp2_yearly.2024
				days = 4
			}
		}
	}
}

# If appropriate, murder anyone travelling with scope:target.
murder_entourage_list_effect = {
	# Pick three random entourage members to kill
	scope:target = {
		current_travel_plan = {
			random_entourage_character = {
				limit = {
					this != scope:target
				}
				scope:owner = {
					add_to_variable_list = {
						name = entourage_members_to_kill
						target = prev
					}
				}
			}
			random_entourage_character = {
				limit = {
					NOR = {
						this = scope:target
						this = scope:owner
						scope:owner = {
							is_target_in_variable_list = {
								name = entourage_members_to_kill
								target = prev
							}
						}
					}
				}
				scope:owner = {
					add_to_variable_list = {
						name = entourage_members_to_kill
						target = prev
					}
				}
			}
			random_entourage_character = {
				limit = {
					NOR = {
						this = scope:target
						this = scope:owner
						scope:owner = {
							is_target_in_variable_list = {
								name = entourage_members_to_kill
								target = prev
							}
						}
					}
				}
				scope:owner = {
					add_to_variable_list = {
						name = entourage_members_to_kill
						target = prev
					}
				}
			}
		}
	}
}

# Restart's the current murder scheme, setting all its variables and such back to zero.
restart_murder_scheme_effect = {
	show_as_tooltip = {
		start_scheme = {
			type = murder
			target_character = scope:target
		}
	}
	hidden_effect = {
		scope:scheme = {
			# Track how many times we've restarted, so we can reset progress.
			increment_variable_effect = {
				VAR = scheme_reset_to_zero_value
				VAL = scheme_success_chance
			}
			# Reset our scheme.
			reset_failed_scheme_effect = yes
		}
	}
}

# Process the death result for anyone who dies during the murder interception.
murder_interception_handle_extra_deaths_effect = {
	if = {
		limit = { exists = scope:scheme_discovered }
		known_murder_effect = {
			VICTIM = $VICTIM$
			MURDERER = scope:owner
			EXPOSER = scope:target
		}
	}
	else = {
		unknown_murder_effect = {
			VICTIM = $VICTIM$
			MURDERER = scope:owner
			REASON = $REASON$
		}
	}
}

# Adds either "Plush and Unremarkable Carpet" modifier if character is Iranian, otherwise adds "Plush and Exotic Carpet"
add_carpet_modifier_effect = {
	if = {
		limit = {
			has_fp3_dlc_trigger = yes
			culture = { has_cultural_pillar = heritage_iranian }
		}
		add_character_modifier = {
			modifier = persian_has_plush_carpet_modifier
			days = 3650
		}
	}
	else = {
		add_character_modifier = {
			modifier = has_plush_carpet_modifier
			days = 3650
		}
	}
}

# If trying to lure a child to push off a roof, try to pick something tangible to tempt them with.
## The things I do for script hygiene.
rooftop_murder_lure_for_child_effect = {
	random_list = {
		# Dog.
		25 = {
			trigger = {
				scope:target = { any_owned_story = { type = story_cycle_pet_dog } }
			}
			save_scope_value_as = {
				name = child_pushed_dog
				value = yes
			}
		}
		# Cat.
		## You monster.
		25 = {
			trigger = {
				scope:target = { any_owned_story = { type = story_cycle_pet_cat } }
			}
			save_scope_value_as = {
				name = child_pushed_cat
				value = yes
			}
			random = {
				chance = 60
				save_scope_value_as = {
					name = cat_survives
					value = yes
				}
			}
		}
		# Toy.
		25 = {
			trigger = {
				scope:target = { has_variable = child_toy_variable }
			}
			save_scope_value_as = {
				name = child_pushed_toy
				value = yes
			}
		}
		# Else nothing.
		1 = {}
	}
}

grab_best_agent_murderer_effect = {
	scope:scheme = {
		random_scheme_agent_slot = {
			limit = {
				is_agent_slot_type = agent_assassin
				is_filled = yes
			}
			alternative_limit = { is_filled = yes }
			slot_character = { save_scope_as = assassin }
		}
		# Plus generate a back-up, in case we need it.
		random_dummy_gender_assassin_effect = yes
	}
}

##################################################
# Seduce Scheme Effects

#Milestone should be 1 or 2, outcome should be success or failure
seduce_ongoing_add_scheme_modifier_effect = {
	scope:scheme = {
		add_scheme_modifier = {
			type = seduce_$OUTCOME$_$MILESTONE$_modifier
		}
	}
}

seduce_ongoing_possible_outcomes_tooltip_effect = {
	show_as_tooltip = {
		random_list = {
			1 = {
				desc = seduce_ongoing_possible_outcomes_tooltip_effect.success.desc
				show_chance = no
				seduce_ongoing_add_scheme_modifier_effect = { MILESTONE = $MILESTONE$ OUTCOME = success }
			}
			1 = {
				desc = seduce_ongoing_possible_outcomes_tooltip_effect.failure.desc
				show_chance = no
				seduce_ongoing_add_scheme_modifier_effect = { MILESTONE = $MILESTONE$ OUTCOME = failure }
			}
		}
	}
}

#To add CHARACTER to a list that block seduction schemes from being initiated
## use in the scope of the character that blocks CHARACTER (i.e. the scheme target's scope)
seduction_block_character_effect = {
	if = {
		limit = { root = scope:target }
		custom_tooltip = seduce_outcome.permanent_block

		hidden_effect = {
			add_opinion = {
				target = $CHARACTER$
				modifier = seduce_permanent_blocker_opinion
			}
		}
	}
	else_if = {
		limit = {
			exists = scope:target
			scope:target = {
				is_alive = yes
			}
		}
		add_opinion = {
			target = $CHARACTER$
			modifier = seduce_permanent_blocker_opinion
		}
	}
}

seduction_cooldown_for_character_effect = {
	if = {
		limit = { root = scope:target }
		custom_tooltip = seduce_outcome.cooldown

		hidden_effect = {
			add_opinion = {
				target = $CHARACTER$
				modifier = seduce_regular_cooldown_opinion
			}
		}
	}
	else = {
		add_opinion = {
			target = $CHARACTER$
			modifier = seduce_regular_cooldown_opinion
		}
	}
}

owner_seduce_outcome_success_send_discovery_event_effect = {
	hidden_effect = {
		if = {
			limit = { exists = scope:scheme_discovered }
			trigger_event = {
				id = seduce_outcome.2900
				days = 3
			}
		}
	}
}

owner_seduce_outcome_become_lovers_option_effects = {
	show_as_tooltip = { set_relation_lover = scope:target }
	add_character_flag = { #to assure that this is when the relationship is set
		flag = consummation_and_relationship
		days = 10
	}

	reverse_add_opinion = {
		target = scope:target
		modifier = romance_opinion
		opinion = 20
	}

	if = {
		limit = {
			faith = {
				has_doctrine_parameter = piety_gain_from_successful_intrigue_schemes
			}	
		}
		add_piety = minor_piety_gain
	}

	if = {
		limit = {
			has_government = landless_adventurer_government
			has_perk = mortal_adoration_perk
			scope:target = { is_ruler = yes }
		}
		add_contact = scope:target
		add_hook_if_possible_default_length_effect = {
			TARGET = scope:target 
			TYPE = manipulation_hook
		}
	}

	if = {
		limit = {
			dynasty ?= {
				has_dynasty_perk = fp1_adventure_legacy_2
			}	
		}
		add_prestige = fp1_adventure_legacy_2_prestige_value
	}

	if = {
		limit = {
			is_close_family_of = scope:target
		}
		create_character_memory = {
			type = seduced_family
			
			participants = {
				family_member = scope:target
			}
		}
	}

	owner_seduce_outcome_success_send_discovery_event_effect = yes
}

owner_seduce_outcome_just_sex_effects = {
	reverse_add_opinion = {
		target = scope:target
		modifier = romance_opinion
		opinion = 20
	}

	if = {
		limit = {
			faith = {
				has_doctrine_parameter = piety_gain_from_successful_intrigue_schemes
			}	
		}
		add_piety = minor_piety_gain
	}

	if = {
		limit = {
			dynasty ?= {
				has_dynasty_perk = fp1_adventure_legacy_2
			}	
		}
		add_prestige = fp1_adventure_legacy_2_prestige_value
	}

	owner_seduce_outcome_success_send_discovery_event_effect = yes
}

#In most cases, it makes more sense to actually apply the sex effect in the target's events (which are after the owner's events). This is because A) you don't want any pop-ups for the target before they have recieved their event and B) because some effects won't get a tooltip for being applied if they were already applied before. The only exception is when the owner is a player and the target is an AI.

 target_seduce_outcome_sex_effect = {
	scope:target = {
		if = {
			limit = {
				NAND = {
					scope:owner = { is_ai = no }
					scope:target = { is_ai = yes }
				}
			}
			had_sex_with_effect = {
				CHARACTER = scope:owner
				PREGNANCY_CHANCE = seduce_pregnancy_chance
			}
		}
		else = {
			show_as_tooltip = {
				had_sex_with_effect = {
					CHARACTER = scope:owner
					PREGNANCY_CHANCE = seduce_pregnancy_chance
				}
			}
		}
	}
}

owner_seduce_outcome_sex_effect = {
	scope:owner = {
		if = {
			limit = {
				scope:owner = { is_ai = no }
				scope:target = { is_ai = yes }
			}
			had_sex_with_effect = {
				CHARACTER = scope:target
				PREGNANCY_CHANCE = seduce_pregnancy_chance
			}
		}
		else = {
			show_as_tooltip = {
				had_sex_with_effect = {
					CHARACTER = scope:owner
					PREGNANCY_CHANCE = seduce_pregnancy_chance
				}
			}
		}
	}
}


seduce_outcome_discovered_expose_secrets_and_adultery_effect = {
	extramarital_sex_attempt_exposure_consequences_with_target_effect = { TARGET = $CHARACTER$ SPOUSE_EVENT = yes } #Adds trait
	if = {
		limit = { relation_with_character_is_incestuous_in_my_or_lieges_faith_trigger = { CHARACTER = $CHARACTER$ } }
		random_secret = {
			type = secret_incest
			expose_secret = $EXPOSER$
		}
	}
	if = {
		limit = { relation_with_character_is_sodomy_in_my_or_lieges_faith_trigger = { CHARACTER = $CHARACTER$ } }
		random_secret = {
			type = secret_homosexual
			expose_secret = $EXPOSER$
		}
	}
}

seduce_outcome_failure_discovered_apply_secrets_effect = {
	give_incest_secret_or_nothing_with_target_effect = { CHARACTER = scope:target }
	give_homosexual_secret_or_nothing_with_target_effect = { CHARACTER = scope:target }
}

seduce_outcome_success_discovered_effect = {
	if = {
		limit = {
			any_secret = {
				type = secret_lover
				OR = {
					secret_target = scope:target
					secret_target = scope:owner
				}
			}
		}
		random_secret = { #Revealing the secret will send events for both lovers
			type = secret_lover
			limit = {
				OR = {
					secret_target = scope:target
					secret_target = scope:owner
				}
			}
			expose_secret = scope:target_liege
		}
	}
	else = {
		scope:owner = { seduce_outcome_discovered_expose_secrets_and_adultery_effect = { CHARACTER = scope:target EXPOSER = scope:target_liege } }
		scope:target = { seduce_outcome_discovered_expose_secrets_and_adultery_effect = { CHARACTER = scope:owner EXPOSER = scope:target_liege } }
	}
}

seduce_outcome_publicised_attempted_crimes_or_nothing_effect = {
	$TARGET$ = {
		#Grab everyone relevant who might be interested in the attempt.
		every_close_family_member = { add_to_list = relevant_parties }
		every_consort = {
			limit = {
				NOT = { is_in_list = relevant_parties }
			}
			add_to_list = relevant_parties
		}
		if = {
			limit = {
				liege ?= {
					NOT = { is_in_list = relevant_parties }
				}
			}
			add_to_list = relevant_parties
		}
		if = {
			limit = {
				court_owner ?= {
					NOT = { is_in_list = relevant_parties }
				}
			}
			add_to_list = relevant_parties
		}
		every_vassal = {
			limit = {
				NOT = { is_in_list = relevant_parties }
			}
			add_to_list = relevant_parties
		}
		every_relation = {
			type = friend
			limit = {
				NOT = { is_in_list = relevant_parties }
			}
			add_to_list = relevant_parties
		}
		every_relation = {
			type = lover
			limit = {
				NOT = { is_in_list = relevant_parties }
			}
			add_to_list = relevant_parties
		}
		$OWNER$ = {
			every_close_family_member = {
				limit = {
					NOT = { is_in_list = relevant_parties }
				}
				add_to_list = relevant_parties
			}
		}

		#Adulterer
		if = {
			limit = {
				$OWNER$ = { is_married = yes }
				trait_is_shunned_or_criminal_in_faith_trigger = {
					TRAIT = trait:adulterer
					FAITH = this.faith
					GENDER_CHARACTER = $OWNER$
				}
			}
			every_in_list = {
				list = relevant_parties
				limit = {
					#Filter out anyone who wouldn't care about this.
					NOR = {
						#Kids too young to understand the bias have no prejudice.
						is_adult = no
						#Not compos mentis.
						has_trait = incapable
						#People who are adulterers.
						has_trait = adulterer
						#The person doing the seducing don't think less of themselves either.
						this = $OWNER$
					}
					#And who count the action as adulterous.
					trait_is_shunned_or_criminal_in_faith_trigger = {
						TRAIT = trait:adulterer
						FAITH = faith
						GENDER_CHARACTER = $OWNER$
					}
				}
				custom = characters_close_to_target_who_dislike_adultery
				#Apply attempt opinion effects.
				add_opinion = {
					modifier = adulterer_advances_on_relevant_character
					target = $OWNER$
				}
			}
		}

		#Fornicator
		if = {
			limit = {
				$OWNER$ = { is_married = no }
				trait_is_shunned_or_criminal_in_faith_trigger = {
					TRAIT = trait:fornicator
					FAITH = faith
					GENDER_CHARACTER = $OWNER$
				}
			}
			every_in_list = {
				list = relevant_parties
				limit = {
					#Filter out anyone who wouldn't care about this.
					NOR = {
						#Kids too young to understand the bias have no prejudice.
						is_adult = no
						#Not compos mentis.
						has_trait = incapable
						#People who are fornicators.
						has_trait = fornicator
						#The person doing the seducing don't think less of themselves either.
						this = $OWNER$
					}
					#And who count the action to be fornication.
					trait_is_shunned_or_criminal_in_faith_trigger = {
						TRAIT = trait:fornicator
						FAITH = this.faith
						GENDER_CHARACTER = $OWNER$
					}
				}
				custom = characters_close_to_target_who_dislike_fornication
				#Apply attempt opinion effects.
				add_opinion = {
					modifier = fornicator_advances_on_relevant_character
					target = $OWNER$
				}
			}
		}

		#Incestuous
		if = {
			limit = {
				relation_with_character_is_incestuous_in_my_faith_trigger = { CHARACTER = $OWNER$ }
			}
			every_in_list = {
				list = relevant_parties
				limit = {
					#Filter out anyone who wouldn't care about this.
					NOR = {
						#Kids too young to understand the bias have no prejudice.
						is_adult = no
						#Not compos mentis.
						has_trait = incapable
						#People who are incestuous.
						has_trait = incestuous
						#Or who don't count the action as incestuous.
						faith = {
							faith_allows_marriage_consanguinity_trigger = {
								CHARACTER_1 = $OWNER$
								CHARACTER_2 = $TARGET$
							}
						}
						#The person doing the seducing don't think less of themselves either.
						this = $OWNER$
					}
				}
				custom = characters_close_to_target_who_dislike_incest
				#Apply attempt opinion effects.
				add_opinion = {
					modifier = incestuous_advances_on_relevant_character
					target = $OWNER$
				}
			}
		}

		#Sodomite
		if = {
			limit = {
				relation_with_character_is_sodomy_trigger = { CHARACTER = $OWNER$ }
			}
			every_in_list = {
				list = relevant_parties
				limit = {
					#Filter out anyone who wouldn't care about this.
					NOR = {
						#Kids too young to understand the bias have no prejudice.
						is_adult = no
						#Not compos mentis.
						has_trait = incapable
						#People who are sodomites themselves.
						has_trait = sodomite
						#Males who could be sodomites.
						AND = {
							is_male = yes
							OR = {
								has_sexuality = bisexual
								has_sexuality = homosexual
							}
						}
						#Or who don't count the action as incestuous.
						faith = {
							faith_allows_marriage_consanguinity_trigger = {
								CHARACTER_1 = $OWNER$
								CHARACTER_2 = $TARGET$
							}
						}
						#The person doing the seducing don't think less of themselves either.
						this = $OWNER$
					}
					#And, finally, must actually be fussed about sodomy to begin with.
					relation_between_characters_is_sodomy_in_my_faith_trigger = {
						CHARACTER_1 = $OWNER$
						CHARACTER_2 = $TARGET$
					}
				}
				custom = characters_close_to_target_who_dislike_sodomy
				#Apply attempt opinion effects.
				add_opinion = {
					modifier = sodomite_advances_on_relevant_character
					target = $OWNER$
				}
			}
		}
	}
}

set_relation_lover_through_seduction_effect = {
	$CHARACTER$ = { save_scope_as = second_character }
	if = { #To save a potential important object to be used later on
		limit = {
			exists = scope:scheme
			scope:scheme = { has_variable = object_of_importance }
			NOT = { has_variable_list = lover_object_of_importance }
		}
		add_to_variable_list = {
			name = lover_object_of_importance
			target = scope:scheme.var:object_of_importance
		}
		add_to_variable_list = {
			name = lover_object_of_importance
			target = scope:second_character
		}
	}
	else_if = { #you can save two different seduction objects
		limit = {
			exists = scope:scheme
			scope:scheme = { has_variable = object_of_importance }
			has_variable_list = lover_object_of_importance
			NOT = { has_variable_list = lover_object_of_importance_2 }
		}
		add_to_variable_list = {
			name = lover_object_of_importance_2
			target = scope:scheme.var:object_of_importance
		}
		add_to_variable_list = {
			name = lover_object_of_importance_2
			target = scope:second_character
		}
	}
	scope:scheme = {
		end_scheme = yes
	}
	if = { # Safeguard because so much stuff can happen
		limit = {
			NOT = { has_relation_lover = scope:second_character }
		}
		scope:second_character = {
			set_relation_lover = {
				target = prev
				reason = $REASON$
				province = $LOCATION$
			}
		}
	}
}

set_object_of_significance_effect = {
	if = {
		limit = {
			scope:scheme = {
				NOT = { has_variable = object_of_importance }
			}
		}
		scope:scheme = {
			random_list = {
				1 = {
					set_variable = {
						name = object_of_importance
						value = flag:rose
					}
				}
				1 = {
					set_variable = {
						name = object_of_importance
						value = flag:sea_shell
					}
				}
			}
		}
	}
}

set_random_religious_text_effect = {
	random_list = {
		1 = {
			#Christian
			trigger = { OR = { faith.religion = religion:catholic_religion faith.religion = religion:protestant_religion faith.religion = religion:eastern_orthodox_religion } }
			save_scope_value_as = {
				name = religious_book_title
				value = flag:golden_legend
			}
		}
		1 = {
			#Christian
			trigger = { OR = { faith.religion = religion:catholic_religion faith.religion = religion:protestant_religion faith.religion = religion:eastern_orthodox_religion } }
			save_scope_value_as = {
				name = religious_book_title
				value = flag:city_of_god
			}
		}
		1 = {
			#Christian
			trigger = {
				OR = { faith.religion = religion:catholic_religion faith.religion = religion:protestant_religion faith.religion = religion:eastern_orthodox_religion }
				NOT = { faith = faith:orthodox }
			}
			save_scope_value_as = {
				name = religious_book_title
				value = flag:summa_theologica
			}
		}
		1 = {
			#Christian
			trigger = {
				OR = { faith.religion = religion:catholic_religion faith.religion = religion:protestant_religion faith.religion = religion:eastern_orthodox_religion }
				NOT = { faith = faith:orthodox }
			}
			save_scope_value_as = {
				name = religious_book_title
				value = flag:sic_et_non
			}
		}
		1 = {
			#Christian Orthodox
			trigger = {
				faith = faith:orthodox
			}
			save_scope_value_as = {
				name = religious_book_title
				value = flag:chrysostomos
			}
		}
		1 = {
			#Christian Orthodox
			trigger = {
				faith = faith:orthodox
			}
			save_scope_value_as = {
				name = religious_book_title
				value = flag:symeon_menologion
			}
		}
		1 = {
			#Christian Orthodox
			trigger = {
				faith = faith:orthodox
			}
			save_scope_value_as = {
				name = religious_book_title
				value = flag:god_and_christ
			}
		}
		1 = {
			#Muslim
			trigger = { faith.religion = religion:islam_religion }
			save_scope_value_as = {
				name = religious_book_title
				value = flag:the_small_book_on_theism
			}
		}
		1 = {
			#Muslim
			trigger = { faith.religion = religion:islam_religion }
			save_scope_value_as = {
				name = religious_book_title
				value = flag:modern_philosophy
			}
		}
		1 = {
			#Any
			save_scope_value_as = {
				name = religious_book_title
				value = flag:stories_from_holy_book
			}
		}
	}
}

set_random_entertainment_text_effect = {
	random_list = {
		1 = {
			#Germanic language
			trigger = {
				root.culture = {
					OR = {
						has_cultural_parameter = anglic_group_language_param
					}
				}
			}
			save_scope_value_as = {
				name = entertainment_book_title
				value = flag:beowulf
			}
		}
		1 = {
			#Germanic language
			trigger = { 
				root.culture = {
					OR = {
						has_cultural_pillar = language_central_germanic
						has_cultural_pillar = language_norse
						has_cultural_pillar = language_anglic
					}
				}
			}
			save_scope_value_as = {
				name = entertainment_book_title
				value = flag:niebelungenlied
			}
		}
		1 = {
			#Latin
			trigger = { root.culture = { has_cultural_pillar = language_italian } }
			save_scope_value_as = {
				name = entertainment_book_title
				value = flag:song_of_roland
			}
		}
		1 = {
			#Welsh saga
			trigger = {
				OR = {
					root.culture = { has_cultural_pillar = language_brythonic }
					root.culture = { has_cultural_pillar = language_goidelic }
				}
			}
			save_scope_value_as = {
				name = entertainment_book_title
				value = flag:mabinogi
			}
		}
		1 = {
			#Greek
			trigger = { root.culture = { has_cultural_pillar = language_greek } }
			save_scope_value_as = {
				name = entertainment_book_title
				value = flag:digenes_akrites
			}
		}
		###New Works
		1 = {
			#Any for now
			save_scope_value_as = {
				name = entertainment_book_title
				value = flag:hitchhikers
			}
		}
		1 = {
			#Any for now
			save_scope_value_as = {
				name = entertainment_book_title
				value = flag:dune
			}
		}
		1 = {
			#Any for now
			save_scope_value_as = {
				name = entertainment_book_title
				value = flag:hobbit
			}
		}
		1 = {
			#Any for now
			save_scope_value_as = {
				name = entertainment_book_title
				value = flag:lotr
			}
		}
		1 = {
			trigger = { 
				OR = { 
					root.culture = { has_cultural_parameter = anglic_group_language_param } 
					root.religion = novelist_religion 
				}
			}
			save_scope_value_as = {
				name = entertainment_book_title
				value = flag:narnia
			}
		}
		1 = {
			trigger = { 
				OR = { 
					root.culture = { has_cultural_parameter = anglic_group_language_param } 
					root.religion = novelist_religion 
				}
			}
			save_scope_value_as = {
				name = entertainment_book_title
				value = flag:foundation
			}
		}
		1 = {
			trigger = { 
				OR = { 
					root.culture = { has_cultural_parameter = anglic_group_language_param } 
					root.religion = novelist_religion 
				}
			}
			save_scope_value_as = {
				name = entertainment_book_title
				value = flag:nineteen_eighty_four
			}
		}
		1 = {
			trigger = { 
				OR = { 
					root.culture = { 
						OR = {
							has_cultural_parameter = west_hispanic_group_language_param
							has_cultural_parameter = middle_hispanic_group_language_param
							has_cultural_parameter = east_hispanic_group_language_param
						} 
					}
					root.religion = novelist_religion 
				}
			}
			save_scope_value_as = {
				name = entertainment_book_title
				value = flag:one_hundred_years
			}
		}
		1 = {
			trigger = { 
				OR = { 
					root.culture = { has_cultural_parameter = french_group_language_param } 
					root.religion = novelist_religion 
				}
			}
			save_scope_value_as = {
				name = entertainment_book_title
				value = flag:les_drames
			}
		}
		1 = {
			trigger = { 
				OR = { 
					root.culture = { has_cultural_parameter = french_group_language_param } 
					root.religion = novelist_religion 
				}
			}
			save_scope_value_as = {
				name = entertainment_book_title
				value = flag:le_club
			}
		}
		1 = {
			trigger = { 
				OR = { 
					root.culture = { has_cultural_parameter = french_group_language_param } 
					root.religion = novelist_religion 
				}
			}
			save_scope_value_as = {
				name = entertainment_book_title
				value = flag:les_chevaliers
			}
		}
		1 = {
			trigger = { 
				OR = { 
					root.culture = { 
						OR = {
							has_cultural_parameter = anglic_group_language_param
							has_cultural_parameter = middle_german_group_language_param
						} 
					}
					root.religion = novelist_religion 
				}
			}
			save_scope_value_as = {
				name = entertainment_book_title
				value = flag:the_shell_seekers
			}
		}
		1 = {
			trigger = { 
				OR = { 
					root.culture = { 
						OR = {
							has_cultural_parameter = anglic_group_language_param
							has_cultural_parameter = middle_german_group_language_param
						} 
					}
					root.religion = novelist_religion 
				}
			}
			save_scope_value_as = {
				name = entertainment_book_title
				value = flag:pillars
			}
		}
		1 = {
			trigger = { 
				OR = { 
					root.culture = { has_cultural_parameter = middle_german_group_language_param } 
					root.religion = novelist_religion 
				}
			}
			save_scope_value_as = {
				name = entertainment_book_title
				value = flag:perfume
			}
		}
		1 = {
			trigger = { 
				OR = { 
					root.culture = { 
						OR = {
							has_cultural_parameter = east_north_germanic_group_language_param
							has_cultural_parameter = west_north_germanic_group_language_param
						} 
					}
					root.religion = novelist_religion 
				}
			}
			save_scope_value_as = {
				name = entertainment_book_title
				value = flag:faceless
			}
		}
		1 = {
			trigger = { 
				OR = { 
					root.culture = { has_cultural_parameter = lausatian_group_language_param } 
					root.religion = novelist_religion 
				}
			}
			save_scope_value_as = {
				name = entertainment_book_title
				value = flag:the_alchemist
			}
		}
		1 = {
			trigger = { 
				OR = { 
					root.culture = { has_cultural_parameter = east_slavic_group_language_param } 
					root.religion = novelist_religion 
				}
			}
			save_scope_value_as = {
				name = entertainment_book_title
				value = flag:the_brothers
			}
		}
		1 = {
			save_scope_value_as = {
				name = entertainment_book_title
				value = flag:one_thousand
			}
		}
		1 = {
			trigger = { 
				OR = { 
					root.culture = { has_cultural_parameter = anglic_group_language_param } 
					root.religion = novelist_religion 
				}
			}
			save_scope_value_as = {
				name = entertainment_book_title
				value = flag:nineteen_eighty_four
			}
		}
		1 = {
			trigger = { 
				OR = { 
					root.culture = { has_cultural_parameter = latin_sprachbund_language_param } 
					root.religion = novelist_religion 
					root.religion = catholic_religion 
				}
			}
			save_scope_value_as = {
				name = entertainment_book_title
				value = flag:the_divine_comedy
			}
		}
		1 = {
			trigger = { 
				OR = { 
					root.culture = { 
						OR = {
							has_cultural_parameter = latin_sprachbund_language_param
							has_cultural_parameter = greek_sprachbund_language_param
						} 
					}
					root.religion = novelist_religion 
				}
			}
			save_scope_value_as = {
				name = entertainment_book_title
				value = flag:the_odyssey
			}
		}
		1 = {
			trigger = { 
				OR = { 
					root.culture = { 
						OR = {
							has_cultural_parameter = latin_sprachbund_language_param
							has_cultural_parameter = greek_sprachbund_language_param
						} 
					}
					root.religion = novelist_religion 
				}
			}
			save_scope_value_as = {
				name = entertainment_book_title
				value = flag:war_and_peace
			}
		}
		1 = {
			trigger = { 
				OR = { 
					root.culture = { has_cultural_parameter = albanian_group_language_param } 
					root.religion = novelist_religion 
				}
			}
			save_scope_value_as = {
				name = entertainment_book_title
				value = flag:the_pyramid
			}
		}
	}
}

set_random_informative_text_effect = {
	random_list = {
		1 = {
			#Arabic
			trigger = {
				OR = {
					root.culture = { has_cultural_pillar = heritage_arabic }
					root.culture = { has_cultural_pillar = language_arabic }
				}
			}
			save_scope_value_as = {
				name = informative_book_title
				value = flag:on_the_judgement_of_the_stars
			}
		}
		1 = {
			#Arabic
			trigger = {
				OR = {
					scope:culture ?= { has_cultural_pillar = heritage_arabic }
					scope:culture ?= { has_cultural_pillar = language_arabic }
				}
			}
			save_scope_value_as = {
				name = informative_book_title
				value = flag:the_perfect_state
			}
		}
		1 = {
			#"Any"
			save_scope_value_as = {
				name = informative_book_title
				value = flag:spiritual_medicine
			}
		}
		1 = {
			#Latin
			trigger = {
				root.capital_province ?= { geographical_region = world_europe }
			}
			save_scope_value_as = {
				name = informative_book_title
				value = flag:trotula
			}
		}
		1 = {
			#Jewish/Any
			save_scope_value_as = {
				name = informative_book_title
				value = flag:the_improvement_of_the_moral_qualities
			}
		}
		1 = {
			#Welsh (Anyone in the British Isles)
			trigger = {
				root.capital_province ?= { geographical_region = world_europe_west_britannia }
			}
			save_scope_value_as = {
				name = informative_book_title
				value = flag:armes_prydein
			}
		}
		1 = {
			#Anywhere around the Mediterrenean
			trigger = {
				root.capital_province ?= {
					OR = {
						geographical_region = world_europe
						geographical_region = world_africa_north_east
						geographical_region = world_africa_north_west
					}
				}
			}
			save_scope_value_as = {
				name = informative_book_title
				value = flag:almagest
			}
		}
		1 = {
			#Greek
			trigger = { root.culture = { has_cultural_pillar = language_greek } }
			save_scope_value_as = {
				name = informative_book_title
				value = flag:anekdota
			}
		}
		1 = {
			#Greek
			trigger = { root.culture = { has_cultural_pillar = language_greek } }
			save_scope_value_as = {
				name = informative_book_title
				value = flag:chronographia
			}
		}
	}
}

#To set up a location to use for the sex scene custom loc key
set_random_sex_scene_location_effect = {
	hidden_effect = {
		if = {
			limit = { NOT = { has_variable = sex_scene_location } }
			random_list = {
				20 = {
					set_variable = {
						name = sex_scene_location
						value = flag:garden
					}
				}
				20 = {
					set_variable = {
						name = sex_scene_location
						value = flag:private_chamber
					}
				}
				20 = {
					set_variable = {
						name = sex_scene_location
						value = flag:stable
					}
				}
				20 = {
					set_variable = {
						name = sex_scene_location
						value = flag:copse
					}
				}
				20 = {
					set_variable = {
						name = sex_scene_location
						value = flag:kitchen
					}
				}
			}
		}
	}
}

#To transfer the location used in the sex scene custom loc key from one character to another
transfer_sex_scene_location_to_character_effect = {
	if = {
		limit = {
			has_variable = sex_scene_location
		}
		if = {
			limit = {
				var:sex_scene_location = flag:garden
			}
			$CHARACTER$ = {
				set_variable = {
					name = sex_scene_location
					value = flag:garden
				}
			}
		}
		else_if = {
			limit = {
				var:sex_scene_location = flag:private_chamber
			}
			$CHARACTER$ = {
				set_variable = {
					name = sex_scene_location
					value = flag:private_chamber
				}
			}
		}
		else_if = {
			limit = {
				var:sex_scene_location = flag:stable
			}
			$CHARACTER$ = {
				set_variable = {
					name = sex_scene_location
					value = flag:stable
				}
			}
		}
		else_if = {
			limit = {
				var:sex_scene_location = flag:copse
			}
			$CHARACTER$ = {
				set_variable = {
					name = sex_scene_location
					value = flag:copse
				}
			}
		}
		else_if = {
			limit = {
				var:sex_scene_location = flag:kitchen
			}
			$CHARACTER$ = {
				set_variable = {
					name = sex_scene_location
					value = flag:kitchen
				}
			}
		}
	}
}

##################################################
# Abduct Scheme Effects

#Sets up the Outcome Roll values
abduct_outcome_roll_setup_effect = {
	#Discovery Roll setup
	save_scope_value_as = {
		name = discovery_chance
		value = {
			value = 100
			subtract = scope:scheme.scheme_secrecy
		}
	}
}

#Roll to check whether a Abduct Scheme is a success or a failure, and whether the owner is discovered
abduct_outcome_roll_effect = {
	#SUCCESS ROLL
	random = {
		chance = scope:scheme.scheme_success_chance
		custom_tooltip = abduct_successful_roll_tt
		scope:owner = { mandala_trickster_increment_successful_schemes_effect = yes }
		save_scope_value_as = {
			name = scheme_successful
			value = yes
		}
	}
	### End Success roll
	#DISCOVERY ROLL
	custom_label = abduct_success_discovery_tt
	random = {
		chance = scope:discovery_chance
		custom_tooltip = abduct_become_discovered_roll_tt
		save_scope_value_as = {
			name = scheme_discovered
			value = yes
		}
	}
	### End Discovery roll

	hidden_effect = {
		#FIRE CORRECT ON ACTIONS
		if = {
			limit = {
				exists = scope:scheme_successful
			}
			trigger_event = {
				on_action = abduct_succeeded
			}
		}
		else = {
			trigger_event = {
				on_action = abduct_failed
			}
		}
	}
}

#Used in the immediate of the Scheme Owner's success event
abduct_success_effect = {
	
	scope:target = {
		add_character_flag = {
			flag = was_abducted_block_notification_event
			days = 2
		}
		trigger_event = abduct_outcome.5001
	}

	hard_imprison_character_effect = {
		TARGET = scope:target
		IMPRISONER = scope:owner
	}
	
	if = {
		limit = {
			exists = scope:owner.house
			exists = scope:target.house
		}
		scope:owner.house = {
			change_house_relation_effect = {
				HOUSE = scope:target.house
				VALUE = house_relation_damage_medium_value
				REASON = abduction
				CHAR = scope:owner
				TARGET_CHAR = scope:target
				TITLE = scope:dummy_gender
			}
		}
	}
}

abduct_failure_effect = {
	#Add Watchful Modifier to the target
	scope:target = {
		show_as_tooltip = {
			add_character_modifier = {
				modifier = watchful_modifier
				days = watchful_modifier_duration
			}
		}
	}

	scope:target = {
		trigger_event = abduct_outcome.5002
	}
}

successful_abduct_outcome_event_option_effect = {
	if = {
		limit = {
			faith = {
				has_doctrine_parameter = piety_gain_from_successful_intrigue_schemes
			}	
		}
		add_piety = minor_piety_gain
	}

	scope:scheme ?= {
		end_scheme = yes
	}
}

##################################################
# Befriend Scheme Effects

successful_befriend_potential_friend_effect = {
	$CHARACTER$ = {
		if = { #Always leads to a potential friendship
			limit = {
				NOR = {
					has_relation_potential_friend = root
					has_relation_friend = root
				}
			}
			if = { #Remove potential rival relation if you have it
				limit = {
					has_relation_potential_rival = root
				}
				remove_relation_potential_rival = root
			}
			set_relation_potential_friend = root
		}
		if = {
			limit = {
				number_of_traits_in_common = {
					target = root
					value >= 3
				}
			}
			$CHARACTER$ = {
				add_opinion = {
					modifier = friendliness_opinion
					target = root
					opinion = 30
				}
			}
		}
		else = {
			$CHARACTER$ = {
				add_opinion = {
					modifier = friendliness_opinion
					target = root
					opinion = 20
				}
			}
		}
	}
}

successful_befriend_critical_change_effect = {
	$CHARACTER$ = {
		hidden_effect = {
			if = { #Remove potential rival relation if you have it
				limit = {
					has_relation_potential_rival = root
				}
				remove_relation_potential_rival = root
			}
		}
		if = { #Set friend relation
			limit = {
				NOT = { has_relation_friend = root  }
			}
			if = {
				limit = {
					exists = scope:relationship_reason_location
				}
				set_relation_friend = { reason = $REASON$ target = root province = scope:relationship_reason_location }
			}
			else = {
				set_relation_friend = { reason = $REASON$ target = root }
			}
		}
		else_if = { #Fallback
			limit = {
				has_relation_friend = root
			}
			$CHARACTER$ = {
				add_opinion = {
					modifier = friendliness_opinion
					target = root
					opinion = 40
				}
			}
		}
	}
	if = {
		limit = {
			has_government = landless_adventurer_government
			has_perk = friendly_counsel_perk
			$CHARACTER$ = { is_ruler = yes }
		}
		add_contact = $CHARACTER$
	}
}

failed_befriend_opinion_change_effect = {
	$CHARACTER$ = {
		add_opinion = {
			modifier = refusal_opinion
			target = root
			opinion = -5
		}
		hidden_effect = {
			set_relation_potential_friend = root
		}
	}
}

failed_befriend_opinion_critical_change_effect = {
	$CHARACTER$ = {
		add_opinion = {
			modifier = disastrous_befriend_attempt_opinion
			target = root
		}
		if = {
			limit = {
				NOR = {
					has_relation_potential_rival = root
					has_relation_rival = root
				}
			}
			hidden_effect = { set_relation_potential_rival = root }
		}
		else_if = { #If you already are potential rivals, you have a chance of becoming Rivals
			limit = {
				has_relation_potential_rival = root
				NOT = {  has_relation_rival = root }
			}
			hidden_effect = { remove_relation_potential_rival = root }
			set_relation_rival = {
				target = root
				reason = rival_disastrous_befriend_attempt
			}
		}
	}
}

##################################################
# Claim Throne Scheme Effects

#Sets up the Outcome Roll values
claim_throne_outcome_roll_setup_effect = {
	# Find appropriate title
	scope:target = {
		primary_title = {
			save_scope_as = target_title
		}
	}
	# Discovery Roll setup
	save_scope_value_as = {
		name = discovery_chance
		value = {
			value = 100
			subtract = scope:scheme.scheme_secrecy
		}
	}
}

claim_throne_check_target_title_effect = {
	# In case something has happened to the target_title, we try to reset it here:
	if = {
		limit = {
			OR = {
				NOT = { exists = scope:target_title } # The title could somehow disappear
				NOT = {
					scope:target_title = { # The title might feasibly pass to someone else
						holder ?= scope:target

					}
				}
			}
		}
		scope:target = {
			primary_title = { # We just assign the target's primary title as the new target title
				save_scope_as = target_title
			}
		}
	}

	# Rivalry check is done here, since it's run in every outcome
	if = {
		limit = {
			OR = {
				exists = scope:scheme_successful
				exists = scope:scheme_discovered
			}
			NOT = { has_relation_rival = scope:target }
		}
		hidden_effect = {
			random = {
				chance = 30
				modifier = {
					add = 30
					has_relation_potential_rival = scope:target
				}
				modifier = {
					exists = scope:scheme_discovered
					add = 30
				}
				modifier = {
					has_relation_friend = scope:target
					add = -25
				}

				save_scope_value_as = {
					name = set_rivalry
					value = yes
				}
			}
		}
	}
}

#Roll to check whether a Claim Throne Scheme is a success or a failure, and whether the owner is discovered
claim_throne_outcome_roll_effect = {
	#SUCCESS ROLL
	random = {
		chance = scope:scheme.scheme_success_chance
		custom_tooltip = claim_throne_successful_roll_tt
		scope:owner = { mandala_trickster_increment_successful_schemes_effect = yes }
		save_scope_value_as = {
			name = scheme_successful
			value = yes
		}
	}
	### End Success roll
	#DISCOVERY ROLL
	custom_description_no_bullet = {
		text = claim_throne_success_discovery_warning_effect
	}
	random = {
		chance = scope:discovery_chance
		custom_tooltip = claim_throne_become_discovered_roll_tt
		save_scope_value_as = {
			name = scheme_discovered
			value = yes
		}
	}
	### End Discovery roll

	hidden_effect = {
		#FIRE CORRECT ON ACTIONS
		if = {
			limit = {
				exists = scope:scheme_successful
			}
			trigger_event = {
				on_action = claim_throne_succeeded
				days = 3
			}
		}
		else = {
			trigger_event = {
				on_action = claim_throne_failed
				days = 3
			}
		}
	}
}

#Used in the immediate of the Scheme Owner's success event
claim_throne_success_effect = {
	# Note that the Claim itself is added in successful_claim_throne_outcome_event_option_effect

	if = {
		limit = {
			exists = scope:scheme_discovered
		}
		# Trigger the response event for the target (actual opinion is set here)
		scope:target = {
			trigger_event = claim_throne_outcome.5001
		}
		
		show_as_tooltip = { # Target dislikes you
			scope:target = {
				add_opinion = {
					target = scope:owner
					modifier = claim_my_throne_success_discovered_opinion
				}
			}
		}
	}
	else = {
		# Trigger the response event for the target (actual opinion is set here)
		scope:target = {
			trigger_event = claim_throne_outcome.5002
		}
		show_as_tooltip = {
			scope:target = {
				add_opinion = {
					target = scope:owner
					modifier = claim_my_throne_success_undiscovered_opinion
					years = 10
				}
			}
		}
	}
}

claim_throne_failure_effect = {
	add_prestige = claim_throne_discovered_failure_prestige_loss
	scope:target = {
		# Fire notification event for target
		trigger_event = claim_throne_outcome.5003
		show_as_tooltip = {
			add_opinion = {
				target = scope:owner
				modifier = claim_my_throne_failure_opinion
				years = 10
			}
			if = {
				limit = { exists = scope:set_rivalry }
				set_relation_rival = {
					target = scope:owner
					reason = rival_claimed_throne_failed
				}
			}
		}
	}
}

successful_claim_throne_event_option_effect = {
	if = {
		limit = {
			exists = scope:scheme_discovered
		}
		add_prestige = claim_throne_discovered_prestige_loss
	}
	show_as_tooltip = {
		scope:target = {
			if = {
				limit = { exists = scope:set_rivalry }
				set_relation_rival = {
					target = scope:owner
					reason = rival_claimed_throne
				}
			}
			if = {
				limit = { exists = scope:scheme_discovered }
				add_opinion = {
					target = scope:owner
					modifier = claim_my_throne_success_discovered_opinion
				}
			}
			else = {
				add_opinion = {
					target = scope:owner
					modifier = claim_my_throne_success_undiscovered_opinion
					years = 10
				}
			}
		}
	}

	scope:scheme = {
		end_scheme = yes
	}

	add_pressed_claim = scope:target_title
}

claim_throne_decline_execution_effect = {
	custom_tooltip = do_not_execute_claim_throne_tooltip
	scope:scheme = { 
		reset_failed_scheme_effect = yes
	}
}

claim_throne_set_mythical_founder_variable_effect = {
	if = {
		limit = {
			AND = { # Charles Martell
				OR = {
					scope:target_title = title:k_france
					scope:target_title = title:e_france
				}
				current_date > 1000.1.1
			}
		}
		set_variable = {
			name = mythical_founder
			value = flag:charles_martell
		}
	}
	else_if = { # Alexander
		limit = {
			OR = {			
				scope:target_title = title:k_thessalonika
				scope:target_title = title:k_hellas
				scope:target_title = title:k_egypt
				AND = {
					OR = {
						scope:target_title = title:k_persia
						scope:target_title = title:e_persia
					}
					NOR = {
						root.faith.religion = religion:islam_religion
						root.faith.religion = religion:zoroastrianism_religion
					}
				}
				scope:target_title = title:k_anatolia
			}
		}
		set_variable = {
			name = mythical_founder
			value = flag:alexander
		}
	}
	else_if = { # Lech
		limit = {
			scope:target_title = title:k_poland # Lech
		}
		set_variable = {
			name = mythical_founder
			value = flag:lech
		}
	}
	else_if = { # Czech
		limit = {
			scope:target_title = title:k_bohemia # Lech
		}
		set_variable = {
			name = mythical_founder
			value = flag:czech
		}
	}
	else_if = { # Rus
		limit = {
			OR = { # Rus
				scope:target_title = title:k_white_rus
				scope:target_title = title:k_ruthenia
				scope:target_title = title:e_russia
			}
		}
		set_variable = {
			name = mythical_founder
			value = flag:rus
		}
	}
	else_if = { # Arthur
		limit = {
			OR = {
				scope:target_title = title:k_wales
				scope:target_title = title:k_cornwall
				scope:target_title = title:k_england
				scope:target_title = title:e_britannia
			}
		}
		set_variable = {
			name = mythical_founder
			value = flag:arthur
		}
	}
	else_if = { # Belisarius
		limit = {
			OR = {
				scope:target_title = title:k_italy
				scope:target_title = title:k_romagna
				scope:target_title = title:k_sardinia
				scope:target_title = title:e_italy
				scope:target_title = title:h_roman_empire
				scope:target_title = title:h_eastern_roman_empire
			}
			faith = faith:orthodox
		}
		set_variable = {
			name = mythical_founder
			value = flag:belisarius
		}
	}
	else_if = { # Romulus
		limit = {
			OR = {
				scope:target_title = title:k_italy
				scope:target_title = title:k_romagna
				scope:target_title = title:k_sardinia
				scope:target_title = title:e_italy
				scope:target_title = title:h_roman_empire
				scope:target_title = title:h_eastern_roman_empire
			}
		}
		set_variable = {
			name = mythical_founder
			value = flag:romulus
		}
	}
	else_if = { # Ardashir
		limit = {
			OR = {
				scope:target_title = title:k_persia
				scope:target_title = title:e_persia
			}
		}
		set_variable = {
			name = mythical_founder
			value = flag:ardashir
		}
	}
	else_if = { # The Pharaohs
		limit = {
			scope:target_title = title:k_egypt
			NOT = { religion = religion:islam_religion }
		}
		set_variable = {
			name = mythical_founder
			value = flag:pharaohs
		}
	}
	else_if = { # The Visigothic Kings
		limit = {
			OR = {
				scope:target_title = title:k_castille
				scope:target_title = title:k_aragon
				scope:target_title = title:k_navarra
				scope:target_title = title:k_andalusia
				scope:target_title = title:k_portugal
				scope:target_title = title:e_spain
			}
			NOT = { religion = religion:islam_religion }
		}
		set_variable = {
			name = mythical_founder
			value = flag:visigothic_kings
		}
	}
	else_if = { # Abd al-Rahman
		limit = {
			OR = {
				scope:target_title = title:k_castille
				scope:target_title = title:k_aragon
				scope:target_title = title:k_navarra
				scope:target_title = title:k_andalusia
				scope:target_title = title:k_portugal
				scope:target_title = title:e_spain
			}
			religion = religion:islam_religion
		}
		set_variable = {
			name = mythical_founder
			value = flag:abd_al_rahman
		}
	}
	else_if = { # Zenobia
		limit = {
			OR = {
				scope:target_title = title:k_syria
				scope:target_title = title:k_mesopotamia
			}
			NOT = { religion = religion:islam_religion }
		}
		set_variable = {
			name = mythical_founder
			value = flag:zenobia
		}
	}
	else = {
		set_variable = {
			name = mythical_founder
			value = flag:fallback
		}
	}
}

##################################################
# Elope Scheme Effects

elope_opinion_list_builder_effect = {
	$OWNER$ = {
		every_spouse = {
			limit = { NOT = { this = $TARGET$ } }
			add_to_temporary_list = $LIST_NAME$
		}
	}
	$TARGET$ = {
		every_spouse = {
			limit = { NOT = { this = $OWNER$ } }
			add_to_temporary_list = $LIST_NAME$
		}
		liege = {
			if = {
				limit = {
					NOR = {
						is_in_list = $LIST_NAME$
						this = $OWNER$
					}
				}
				add_to_temporary_list = $LIST_NAME$
			}
		}
	}
}

elope_success_effect = {
	elope_opinion_list_builder_effect = { OWNER = $OWNER$ TARGET = $TARGET$ LIST_NAME = elope_opinion_list }

	#Because this can be used in events or interaction window, we save root_scope here
	if = {
		limit = { exists = scope:actor }
		scope:actor = { save_temporary_scope_as = root_scope }
	}
	else = {
		root = { save_temporary_scope_as = root_scope }
	}

	#Target prisoner release
	$TARGET$ = {
		if = {
			limit = { is_imprisoned = yes }
			release_from_prison = yes
		}
	}

	$OWNER$ = {
		#Tooltip for marriage
		show_as_tooltip = {
			if = {
				limit = { is_female = yes }
				marry_matrilineal = $TARGET$
			}
			else = {
				marry = $TARGET$
			}
		}

		#Owner's personal consequences (hidden or not), divorce happens here
		if = {
			limit = {
				scope:root_scope = $OWNER$
			}	
			elope_success_personal_consequences_effect = { CHARACTER = $OWNER$ }
		}
		else = {
			hidden_effect = { elope_success_personal_consequences_effect = { CHARACTER = $OWNER$ } }
		}
	}

	#Opinions
	ordered_in_list = {
		list = elope_opinion_list
		max = 10 #To make sure we include all
		check_range_bounds = no
		order_by = ai_vengefulness

		#Towards owner
		if = {
			limit = {
				OR = { #Owner wants to see everything, root wants to see their own
					scope:root_scope = $OWNER$
					scope:root_scope = this
				}
			}
			elope_success_opinion_rivalry_effect = { CHARACTER = $OWNER$ }
		}
		else = {
			hidden_effect = { elope_success_opinion_rivalry_effect = { CHARACTER = $OWNER$ } }
		}

		#Towards target
		if = {
			limit = { scope:root_scope = this } #Root wants to see their own
			elope_success_opinion_rivalry_effect = { CHARACTER = $TARGET$ }
		}
		else = {
			hidden_effect = { elope_success_opinion_rivalry_effect = { CHARACTER = $TARGET$ } }
		}
	}


	hidden_effect = {
		#Target's personal consequences, divorce happens here
		elope_success_personal_consequences_effect = { CHARACTER = $TARGET$ }

		#Marriage
		$OWNER$ = { #We do this last so old spouses remain when we run personal consequences effect
			if = {
				limit = { is_female = yes }
				marry_matrilineal = $TARGET$
			}
			else = {
				marry = $TARGET$
			}
		}
	}
}

elope_failure_discovered_effect = {
	elope_opinion_list_builder_effect = { OWNER = $OWNER$ TARGET = $TARGET$ LIST_NAME = elope_opinion_list }

	#Expose lover secret
	$OWNER$ = {
		random_secret = {
			type = secret_lover
			limit = {
				secret_target = $TARGET$
			}
			
			if = {
				limit = { $DISCOVERER$ = { is_ai = yes } }
				expose_secret = $DISCOVERER$
			}
			else = {
				reveal_to = $DISCOVERER$
			}
		}
	}

	#Opinions
	ordered_in_list = {
		list = elope_opinion_list
		max = 10 #To make sure we include all
		check_range_bounds = no
		order_by = ai_vengefulness

		#Towards owner
		if = {
			limit = {
				OR = { #Owner wants to see everything, root wants to see their own
					root = $OWNER$
					root = this
				}
			}
			elope_failure_discovered_opinion_rivalry_effect = { CHARACTER = $OWNER$ }
		}
		else = {
			hidden_effect = { elope_failure_discovered_opinion_rivalry_effect = { CHARACTER = $OWNER$ } }
		}

		#Towards target
		if = {
			limit = { root = this } #Root wants to see their own
			elope_failure_discovered_opinion_rivalry_effect = { CHARACTER = $TARGET$ }
		}
		else = {
			hidden_effect = { elope_failure_discovered_opinion_rivalry_effect = { CHARACTER = $TARGET$ } }
		}
	}
}

elope_success_opinion_rivalry_effect = {
	#Crime opinion
	add_opinion = {
		target = $CHARACTER$
		modifier = elopement_opinion
	}

	#Rivalry
	if = {
		limit = {
			can_set_relation_rival_trigger = { CHARACTER = $CHARACTER$ }
			is_ai = yes
			trigger_if = {
				limit = { is_spouse_of = $CHARACTER$ }
				ai_vengefulness >= low_positive_ai_value
			}
			trigger_else = {
				ai_vengefulness > 0
			}
		}
		if = {
			limit = {
				can_set_relation_nemesis_trigger = { CHARACTER = $CHARACTER$ }
				ai_vengefulness >= medium_positive_ai_value
			}
			set_relation_nemesis = {
				reason = nemesis_elopement
				copy_reason = rival
				target = $CHARACTER$
			}
		}
		else = {
			set_relation_rival = {
				target = $CHARACTER$
				reason = rival_eloped
			}
		}
	}
	else_if = {
		limit = {
			can_set_relation_potential_rival_trigger = { CHARACTER = $CHARACTER$ }
		}
		hidden_effect = { set_relation_potential_rival = $CHARACTER$ }
	}
}

elope_success_personal_consequences_effect = {
	$CHARACTER$ = {

		#Divorce
		if = {
			limit = {
				is_married = yes
			}
			every_spouse = {
				save_temporary_scope_as = eloper_divorcee

				divorce_effect = {
					DIVORCER = $CHARACTER$
					DIVORCEE = scope:eloper_divorcee
				}
				if = {
					limit = { has_relation_lover = $CHARACTER$ }
					remove_relation_lover = $CHARACTER$
				}
			}

			#Divorce consequences
			if = {
				limit = { faith = { NOT = { has_doctrine = doctrine_divorce_allowed } } }
				add_prestige_level = -1
				add_piety_level = -1

				if = {
					limit = {
						faith = { has_doctrine = tenet_communion }
						NOT = { has_trait = excommunicated }
					}
					add_trait = excommunicated
				}
			}
		}

		#Break betrothal
		if = {
			limit = { is_betrothed = yes }
			reverse_add_opinion = {
				modifier = broke_betrothal_opinion
				target = betrothed
			}
			break_betrothal = betrothed
			if = {
				limit = {
					has_been_promised_grand_wedding = yes
				}
				break_grand_wedding_betrothal_effect = yes
			}
		}

		#End concubinage
		if = {
			limit = { is_concubine = yes }
			liege = {
				remove_concubine = $CHARACTER$

				if = {
					limit = { has_relation_lover = $CHARACTER$ }
					remove_relation_lover = $CHARACTER$
				}
			}
			add_prestige_level = -1
		}
	}
}

elope_failure_discovered_opinion_rivalry_effect = {
	add_opinion = {
		target = $CHARACTER$
		modifier = attempted_elopement_opinion
	}

	#Rivalry
	if = {
		limit = {
			can_set_relation_potential_rival_trigger = { CHARACTER = $CHARACTER$ }
		}
		hidden_effect = { set_relation_potential_rival = $CHARACTER$ }
	}
}

##################################################
# Fabricate Hook Scheme Effects

fabricate_hook_assign_appropriate_type_effect = {
	debug_log = "Running Fabricate Hook's Assign Appropriate Hook effect"
	assert_if = {
		limit = {
			scope:owner = {
				has_strong_hook = scope:target
			}
		}
		text = "The Fabricate Hook Scheme Owner already has a Strong Hook on the Target! Why is this effect running?"
	}
	assert_if = {
		limit = {
			scope:target = { is_ruler = yes }
			NOT = { exists = scope:strong_hook_against_ruler }
			scope:owner = { has_hook = scope:target }
		}
		text = "The Owner has a hook against a ruler target, and the strong hook roll failed. Something has gone wrong to get here!"
	}

	save_scope_value_as = {
		name = hook_type
		value = flag:$TYPE$
	}
	# Go through the Hook types, and assign the appropriate one
	if = {
		limit = {
			scope:hook_type = flag:loyalty_hook
		}
		# Check rulers first (to give weaker Hooks)
		if = {
			limit = {
				scope:target = { is_ruler = yes }
				NOT = { exists = scope:strong_hook_against_ruler } # Set by on_ready in the Scheme
			}
			send_interface_toast = {
				title = fabricate_hook_gained_indebted_title
				left_icon = scope:target
				add_hook = {
					type = indebted_hook
					target = scope:target
				}
			}
		}
		else = {
			send_interface_toast = {
				title = fabricate_hook_gained_loyalty_title
				left_icon = scope:target
				add_hook = {
					type = loyalty_hook
					target = scope:target
				}
			}
		}
	}
	else_if = {
		limit = {
			scope:hook_type = flag:fabrication_hook
		}
		# Check rulers first (to give weaker Hooks)
		if = {
			limit = {
				scope:target = { is_ruler = yes }
				NOT = { exists = scope:strong_hook_against_ruler } # Set by on_ready in the Scheme
			}
			send_interface_toast = {
				title = fabricate_hook_gained_manipulation_title
				left_icon = scope:target
				add_hook = {
					type = manipulation_hook
					target = scope:target
				}
			}
		}
		else = {
			send_interface_toast = {
				title = fabricate_hook_gained_indebted_title
				left_icon = scope:target
				add_hook = {
					type = fabrication_hook
					target = scope:target
				}
			}
		}
	}
	else_if = {
		limit = {
			scope:hook_type = flag:life_threat_hook
		}
		debug_log = "Attempting to set life threat hook"
		# Check rulers first (to give weaker Hooks)
		if = {
			limit = {
				scope:target = { is_ruler = yes }
				NOT = { exists = scope:strong_hook_against_ruler } # Set by on_ready in the Scheme
			}
			debug_log = "Trying to set regular threat hook against ruler"
			send_interface_toast = {
				title = fabricate_hook_gained_threat_title
				left_icon = scope:target
				add_hook = {
					type = threat_hook
					target = scope:target
				}
				scope:target = {
					add_opinion = {
						target = scope:owner
						modifier = fabricate_hook_threatened_me
						years = 10
					}
				}
			}
		}
		else = {
			if = {
				limit = { exists = scope:strong_hook_against_ruler }
				debug_log = "Trying to set life_threat_hook against a ruler"
			}
			else = {
				debug_log = "Setting life_threat_hook against non-ruler"
				assert_if = {
					limit = { scope:target = { is_ruler = yes } }
					text = "There is no ruler strong hook roll, but we're still trying to set a life_threat_hook on them!"
				}
			}
			send_interface_toast = {
				title = fabricate_hook_gained_threat_title
				left_icon = scope:target
				add_hook = {
					type = life_threat_hook
					target = scope:target
				}
				scope:target = {
					add_opinion = {
						target = scope:owner
						modifier = fabricate_hook_threatened_me
						years = 10
					}
				}
			}
		}
	}
	# Error catch
	else = {
		assert_if = {
			limit = { always = yes } # It should never get here
			text = "Fabricate Hook assignment effect did not have a Hook type set when trying to assign a Hook!"
		}
	}
}

fabricate_hook_block_scheme_owner_from_further_schemes_effect = {
	add_opinion = {
		target = scope:owner
		modifier = fabricated_hook_against_court_opinion
		years = 5
	}
	custom_tooltip = fabricate_hook_i_may_not_fabricate_again
}

fabricate_hook_discovery_effect = {
	show_as_tooltip = { # Target dislikes you
		custom_tooltip = fabricate_hook_i_may_not_fabricate_again
		scope:target = {
			add_opinion = {
				target = scope:owner
				modifier = fabricated_hook_against_court_opinion
				years = 5
			}
		}
		if = {
			limit = {
				exists = scope:target.court_owner
				scope:target != scope:target.court_owner
			}
			scope:target.court_owner = {
				add_opinion = {
					target = scope:owner
					modifier = fabricated_hook_against_court_opinion
					years = 5
				}
			}
		}
	}

	hidden_effect  = {
		# Set a blocker for Fabricating further Hooks against Court in question
		if = {
			limit = {
				exists = scope:target.court_owner
			}
			scope:target.court_owner = {
				send_interface_message = {
					type = fabricate_hook_bad_message
					left_icon = scope:owner
					title = hostile_scheme_discovery.3002.t

					if = {
						limit = {
							scope:owner != scope:target.court_owner
						}
						fabricate_hook_block_scheme_owner_from_further_schemes_effect = yes
					}
				}
			}
		}
		if = {
			limit = {
				OR = {
					NOT = { exists = scope:target.court_owner }
					scope:target.court_owner != scope:target
				}
			}
			scope:target = {
				add_opinion = {
					target = scope:owner
					modifier = fabricated_hook_against_court_opinion
					years = 5
				}
			}
		}
	}
}

#Used in event options
fabricate_hook_success_effect = {
	fabricate_hook_assign_appropriate_type_effect = {
        TYPE = $TYPE$ # Sets the correct hook type to give
    }
    if = {
        limit = { exists = scope:scheme_discovered }
        fabricate_hook_discovery_effect = yes
    }
    if = {
        limit = { exists = scope:scheme }
        scope:scheme = {
            end_scheme = yes
        }
    }
}

fabricate_hook_decline_execution_effect = {
	scope:scheme = {
		add_scheme_modifier = {
			type = fabricate_hook_building_influence_modifier
		}
		custom_tooltip = restart_scheme_tt
		reset_failed_scheme_effect = yes
	}
}

fabricate_hook_success_notification_event_effect = {
	custom_tooltip = fabricate_hook_hook_gained_on_you
	if = {
		limit = {
			exists = scope:scheme_discovered
			scope:target = scope:target.court_owner
		}
		fabricate_hook_block_scheme_owner_from_further_schemes_effect = yes
	}
}

##################################################
# Sway Scheme Effects

sway_end_effect = {
	if = {
		limit = {
			scope:target = {
				NOT = {
					has_opinion_modifier = {
						target = scope:owner
						modifier = scheme_sway_opinion
						value >= sway_max_value # 100 by default
					}
				}
			}
		}
		if = {
			limit = {
				exists = scope:scheme
			}
			scope:scheme = {
				reset_failed_scheme_effect = yes
			}
		}
		if = {
			limit = {
				exists = scope:scheme_successful
			}
			custom_tooltip = sway_continue
		}
		else = {
			custom_tooltip = sway_try_again
		}
		
		scope:owner = { # The AI never stops swaying unless we force it to, this makes them use a more even spread of schemes
			if = {
				limit = {
					is_ai = yes
					scope:target = {
						NAND = {
							is_vassal_of = scope:owner
							is_a_faction_member = yes
							opinion = {
								target = scope:owner
								value < 100
							}
						}
					}
				}
				if = { # Sway your realm priest for a long time
					limit = {
						scope:target = {
							is_theocratic_lessee = yes
							opinion = {
								target = scope:owner
								value <= 50
							}
						}
					}
					random = {
						chance = 10
						scope:scheme = {
							end_scheme = yes
						}
					}
				}
				else_if = {
					limit = {
						scope:target = {
							opinion = {
								target = scope:owner
								value < -25
							}
						}
					}
					random = {
						chance = 10
						scope:scheme = {
							end_scheme = yes
						}
					}
				}
				else_if = {
					limit = {
						scope:target = {
							opinion = {
								target = scope:owner
								value < 0
							}
						}
					}
					random = {
						chance = 30
						scope:scheme = {
							end_scheme = yes
						}
					}
				}
				else_if = {
					limit = {
						scope:target = {
							opinion = {
								target = scope:owner
								value < 35
							}
						}
					}
					random = {
						chance = 50
						scope:scheme = {
							end_scheme = yes
						}
					}
				}
				else = {
					scope:scheme = {
						end_scheme = yes
					}
				}
			}
		}
	}
	else = {
		#hidden_effect = { # What was this ever supposed to achieve?
		#	remove_opinion = {
		#		target = scope:owner
		#		modifier = scheme_sway_opinion
		#	}
		#	add_opinion = {
		#		target = scope:owner
		#		modifier = scheme_sway_opinion
		#		opinion = 100
		#	}
		#}
		scope:owner = {
			send_interface_toast = {
				title = sway_complete
				left_icon = scope:target
				scope:scheme = {
					end_scheme = yes
				}
			}
		}
	}
}

sway_ongoing_1002_outcome_effect = {
	if  = {
		limit = {
			exists = scope:believer
			has_relation_friend = scope:believer
		}
		show_as_tooltip = { theology_3021_a_success_effect = yes }
	}
	else = {
		random_list = {
			1 = {
				desc = diplomacy_majesty.0004.success.tt
				show_chance = no
				show_as_tooltip = {
					scope:compliment_receiver = {
						add_opinion = {
							target = root
							modifier = respect_opinion
							opinion = 10
						}
					}
				}
			}
			1 = {
				desc = diplomacy_majesty.0004.failure.tt
				show_chance = no
				show_as_tooltip = {
					scope:compliment_receiver = {
						add_opinion = {
							target = root
							modifier = respect_opinion
							opinion = -5
						}
					}
				}
			}
		}
	}

	hidden_effect = {
		if = {
			limit = {
				exists = scope:compliment_outcome
				scope:compliment_outcome = flag:good
			}
			trigger_event = sway_ongoing.1003
		}
		else_if = { #Is treated as a good outcome here
			limit = {
				exists = scope:compliment_outcome
				scope:compliment_outcome = flag:neutral
			}
			trigger_event = sway_ongoing.1003
		}
		else_if = {
			limit = {
				exists = scope:compliment_outcome
				scope:compliment_outcome = flag:bad
			}
			trigger_event = sway_ongoing.1004
		}
	}
}

##################################################
# Court Scheme Effects

court_success_prestige_effect = {

	if = {
		limit = { court_love_is_shunned_or_criminal_trigger = no }  #Only if it's not a taboo courtship

		#Whose tier matters?
		if = {
			limit = {
				scope:target = {
					is_ruler = no
					exists = liege
					OR = {
						is_spouse_of = this.liege
						is_close_or_extended_family_of = this.liege
					}
				}
			}
			scope:target = { liege = { save_scope_as = prestige_comparison } }
		}
		else = {
			scope:target = { save_scope_as = prestige_comparison }
		}

		#Epic
		if = {
			limit = {
				#They are at least two levels above you or empire level
				OR = {
					tier_difference = {
						target = scope:prestige_comparison
						value <= -2
					}
					scope:prestige_comparison.highest_held_title_tier = tier_empire
				}
			}
			add_prestige = massive_prestige_gain
		}
		#Great
		else_if = {
			limit = {
				OR = {
					#They are one level above you or kingdom level
					tier_difference = {
						target = scope:prestige_comparison
						value = -1
					}
					scope:prestige_comparison.highest_held_title_tier = tier_kingdom
				}
			}
			add_prestige = major_prestige_gain
		}
		#Good
		else_if = {
			limit = {
				#They're your level or duchy level
				OR = {
					scope:prestige_comparison.highest_held_title_tier = this.highest_held_title_tier
					scope:prestige_comparison.highest_held_title_tier = tier_duchy
				}
			}
			add_prestige = medium_prestige_value
		}
		#Okay
		else_if = {
			limit = {
				#They're at least county level
				scope:prestige_comparison.highest_held_title_tier >= tier_county
			}
			add_prestige = minor_prestige_value
		}
		#Everything else (everyone targeting barons/unlanded)
		else = {
			add_prestige = miniscule_prestige_value
		}
	}
}

court_ongoing_1010_good_duel_outcome_effect = {
	add_prestige = medium_prestige_gain
	scope:scheme = {
		add_scheme_modifier = {
			type = courting_act_of_heroism_modifier
		}
	}
}

court_ongoing_fetch_gift_modifier_effect = {
	#Wolf pelt
	if = {
		limit = { 
			scope:target = { has_character_flag = court_ongoing_wolf_pelt_flag }
			has_royal_court = yes # Since these are court artifacts and serve no real purpose to those without a court
		}
		create_artifact_animal_hide_effect = {
			OWNER = scope:target
			HUNTER = scope:target
			LEGENDARY = no
			ANIMAL = flag:wolf
		}
	} 
	# Necklace
	else_if = {
		limit = { 
			scope:target = { has_character_flag = court_ongoing_necklace_flag }
		}
		create_artifact_necklace_effect = {
			OWNER = scope:target
			SMITH = scope:target
		}
		hidden_effect_new_object = {
			scope:newly_created_artifact = {
				flag_as_trash_artifact = yes
			}
		}
	}
	# Flower
	else_if = {
		limit = { 
			scope:target = { has_character_flag = court_ongoing_orchid_flag }
		}
		save_scope_value_as = {
			name = flower_species
			value = flag:flower_type_orchid
		}
		create_artifact_pressed_flower_effect = { OWNER = scope:target } 
		clear_saved_scope = flower_species
		hidden_effect_new_object = {
			scope:newly_created_artifact = {
				flag_as_trash_artifact = yes
			}
		}
	}
	else = {
		add_character_modifier = {
			modifier = $GIFT$_modifier
			years = 20
		}
	}
}

court_ongoing_fetch_gift_target_outcome_effect = {
	hidden_effect = {
		scope:target = {
			if = {
				limit = { is_ai = no }
			}
			save_temporary_scope_value_as = {
				name = gift_outcome
				value = flag:$OUTCOME$
			}

			if = {
				limit = {
					scope:gift_outcome = flag:success
				}
				send_interface_toast = {
					title = court_ongoing.1021.$GIFT$.success
					left_icon = scope:owner
					court_ongoing_fetch_gift_modifier_effect = { GIFT = $GIFT$ }
				}
			}
			else_if = {
				limit = {
					scope:gift_outcome = flag:failure
				}
				send_interface_toast = {
					title = court_ongoing.1021.$GIFT$.failure
					left_icon = scope:owner
				}
			}
			#Flag clean up 
			remove_character_flag = court_ongoing_wolf_pelt_flag
			remove_character_flag = court_ongoing_necklace_flag
			remove_character_flag = court_ongoing_orchid_flag
		}
	}
}

court_ongoing_1030_dog_modifier_effect = {
	if = {
		limit = {
			NOT = { has_character_flag = had_dog_story }
		}
		start_dog_story_cycle_effect = yes
	}
}

court_ongoing_1030_cat_modifier_effect = {
	 if = {
		limit = {
			NOT = { has_character_flag = had_cat_story }
		}
		start_cat_story_cycle_effect = yes
	}
}

court_ongoing_1030_eagle_modifier_effect = {
	 if = {
		limit = {
			NOT = { has_character_flag = had_eagle_story }
		}
		save_scope_value_as = {
			name = eagle_capture_method
			value = flag:gift
		}
		start_eagle_story_cycle_effect = yes
	}
}

court_ongoing_1030_failure_effect = {
	reverse_add_opinion = {
		target = scope:target
		modifier = disappointed_opinion
		opinion = -10
	}
}

court_ongoing_1100_outcome_effect = {
	show_as_tooltip = {
		random_list = {
			1 = {
				desc = court_ongoing.1100.success.tt
				show_chance = no
				scope:scheme = {
					add_scheme_modifier = {
						type = courting_charm_modifier
					}
				}
			}
			1 = {
				desc = court_ongoing.1100.neutral.tt
				show_chance = no
			}
			1 = {
				desc = court_ongoing.1100.failure.tt
				show_chance = no
				reverse_add_opinion = {
					target = scope:target
					modifier = insult_opinion
					opinion = -10
				}
			}
		}
	}

	hidden_effect = {
		scope:target = {
			trigger_event = {
				id = court_ongoing.1101
				days = { 3 7 }
			}
		}
	}
}

court_consummate_effect = {
	if = {
		limit = { this = scope:owner }
		
	}
	else = {
		set_relation_soulmate = scope:owner
	}
}

court_kiss_effect = {
	
	hidden_effect = {
		if = {
			limit = { NOT = { has_relation_potential_lover = scope:target } }
			set_relation_potential_lover = scope:target
		}
	}
}

target_success_opinion_bonus_effect = {
	reverse_add_opinion = {
		target = scope:owner
		modifier = love_opinion
		opinion = 30
	}
}

end_court_scheme_effect = {
	save_temporary_scope_value_as = {
		name = court_outcome
		value = flag:$OUTCOME$
	}

	scope:owner = {
		# SUCCESS: SOULMATES
		# (This is the only one which target also needs to see, run it in owner scope in show_as_tooltip first and then execute in target's scope)
		if = {
			limit = { scope:court_outcome = flag:success_soulmate }
			
			scope:target = { set_relation_soulmate = { reason = $REASON$ target = prev } }
			if = {
				limit = {
					NOR = {
						has_sexuality = asexual
						scope:target = { has_sexuality = asexual }
					}
				}
				had_sex_with_effect = { #Run this in target scope because owner has own tooltip
					CHARACTER = scope:target
					PREGNANCY_CHANCE = pregnancy_chance
				}
			}		
			reverse_add_opinion = {
				target = scope:target
				modifier = romance_scheme_courtship_opinion #Blocks courtship
			}

			#Maybe break of existing lover relationships
			hidden_effect = {
				scope:target = {
					if = {
						limit = {
							has_trait = lustful
							is_ai = yes
							any_relation = {
								type = lover
								this != scope:owner
							}
						}
						every_relation = {
							type = lover
							random = {
								chance = 90
								opinion_modifier = { #Less likely if they really like the lover
									who = scope:target
									opinion_target = this
									multiplier = -0.5
									min = -20
								}
								modifier = { #More likely if they have more lovers
									add = 10
									scope:target = {
										any_relation = {
											type = lover
											count >= 2
										}
									}
								}
								lover_breakup_effect = {
									BREAKER = scope:target
									LOVER = this
								}
							}
						}
					}
				}
			}
		}
		# SUCCESS: KISS
		else_if = {
			limit = { scope:court_outcome = flag:success_kiss }
			custom_tooltip = court_outcome.kiss.tt
			reverse_add_opinion = {
				target = scope:target
				modifier = romance_scheme_courtship_opinion #Blocks courtship
			}
		}
		# FAILURE: SOFT
		else_if = {
			limit = { scope:court_outcome = flag:failure_soft }
			#Shared effect with Seduce because failure in one scheme should block the other
			scope:target = { seduction_cooldown_for_character_effect = { CHARACTER = scope:owner } }
		}
		# FAILURE: HARD
		else_if = {
			limit = { scope:court_outcome = flag:failure_hard }
			#Shared effect with Seduce because failure in one scheme should block the other
			scope:target = { seduction_block_character_effect = { CHARACTER = scope:owner } }
		}
		
		# Tradition bonuses
		if = {
			limit = {
				OR = {
					scope:court_outcome = flag:success_soulmate
					scope:court_outcome = flag:success_kiss
				}
				culture = {
					has_cultural_parameter = romance_scheme_bonuses
				}
				exists = dynasty
			}
			dynasty = {
				add_dynasty_prestige = minor_dynasty_prestige_gain
			}
		}
		else_if = {
			limit = {
				OR = {
					scope:court_outcome = flag:failure_soft
					scope:court_outcome = flag:failure_hard
				}
				culture = {
					has_cultural_parameter = romance_scheme_bonuses
				}
			}
			add_stress = medium_stress_impact_gain
		}
	}

	scope:scheme = { end_scheme = yes }
}

##################################################
# Steal Back Artefact Scheme Effects

#Used in the immediate of the Scheme Owner's success event
steal_back_artifact_success_effect = {
	scope:target = {
		add_opinion = {
			target = scope:owner
			modifier = stole_artifact_from_me
		}
		# Feud score
		scope:owner.house = {
			change_house_relation_feud_score_effect = {
				TARGET = scope:owner.house
				REASON = stole_artifact
				VALUE = house_feud_medium_counter_value
			}
		}
		# Contracts
		hidden_effect = {
			if = {
				limit = {
					any_character_task_contract = {
						task_contract_type  = laamp_steal_artifact_contract
						var:task_contract_target ?= scope:target
					}
				}
				random_character_task_contract = {
					task_contract_type  = laamp_steal_artifact_contract
					limit = {
						var:task_contract_target ?= scope:target
					}
					complete_task_contract = success_standard
				}
			}
		}
	}
}

steal_back_artifact_failure_effect = {
	#Add Watchful Modifier to the target
	scope:target = {	
		add_character_modifier = {
			modifier = watchful_modifier
			days = watchful_modifier_duration
		}
		add_opinion = {
			target = scope:owner
			modifier = attempted_to_steal_artifact_from_me
		}
	}
}

##################################################
# Scheme Start Effects

## Start a (non-contract) scheme with agents
#
# Arguments:
#  SCHEME_TYPE - Type of scheme
#  TARGET_TYPE - What type of thing to target (character or title)
#  TARGET_SCOPE - Individual game object to target (character or title)
#  AGENT_1..5 - Scheme agent slots for the scheme.
begin_scheme_with_agents_effect = {
	save_scope_as = scheme_launcher

	# Flag that we _don't_ need more agents.
	set_variable = {
		name = agents_added
		value = yes
		days = 1
	}

	# Start the scheme.
	start_scheme = {
		type = $SCHEME_TYPE$
		$TARGET_TYPE$ = $TARGET_SCOPE$

		save_scope_as = new_scheme
	}

	# Assign agent slots et al. to the newly created scheme.
	scope:new_scheme ?= {
		# Add our starting agents.
		add_agent_slot = $AGENT_1$
		add_agent_slot = $AGENT_2$
		add_agent_slot = $AGENT_3$
		add_agent_slot = $AGENT_4$
		add_agent_slot = $AGENT_5$

		# Assign initial agents for non-player schemers.
		if = {
			limit = {
				scope:scheme_launcher = {
					is_ai = yes
				}
			}
			auto_assign_scheme_agents = yes
		}

		# If we have a custom charge threshold to complete, set that here.
		## Overthrow Regent.
		if = {
			limit = { scheme_type = overthrow_regent }
			set_variable = {
				name = custom_charge_threshold
				value = 1
			}
		}
		# Set up our grace period.
		set_variable = {
			name = secrecy_grace_period
			value = secrecy_grace_character_total_starting_value
		}
	}

	open_view = {
		view = intrigue_window
		player = scope:new_scheme.scheme_owner
	}
}

begin_contract_scheme_with_agents_effect = {
	# Log our scheme launcher so that we can refer to them down the line.
	save_scope_as = scheme_launcher
	# Flag that we _don't_ need more agents.
	set_variable = {
		name = agents_added
		value = yes
		days = 1
	}
	every_scheme = { add_to_list = current_schemes_list }
	# check if you have to attach a contract to the scheme
	# Now start the scheme.
	start_scheme = {
		type = $SCHEME_TYPE$
		$TARGET_TYPE$ = $TARGET_SCOPE$
		contract = $TASK_CONTRACT$
	}
	# And grab the scheme's scope.
	random_scheme = {
		limit = {
			NOT = { is_in_list = current_schemes_list }
		}
		save_scope_as = new_scheme
	}
	scope:new_scheme ?= {
		# Add our starting agents.
		add_agent_slot = $AGENT_1$
		add_agent_slot = $AGENT_2$
		add_agent_slot = $AGENT_3$
		add_agent_slot = $AGENT_4$
		add_agent_slot = $AGENT_5$
		# If we have a custom charge threshold to complete, set that here.
		## Overthrow Regent.
		if = {
			limit = { scheme_type = overthrow_regent }
			set_variable = {
				name = custom_charge_threshold
				value = 1
			}
		}
		# Set up our grace period.
		set_variable = {
			name = secrecy_grace_period
			value = secrecy_grace_character_total_starting_value
		}
		set_variable = {
			name = attached_task_contract
			value = $TASK_CONTRACT$
		}
	}
	$TASK_CONTRACT$ = {
		set_variable = {
			name = attached_scheme
			value = scope:new_scheme
		}
	}
	open_view = {
		view = intrigue_window
		player = scope:new_scheme.scheme_owner
	}
}

begin_scheme_basic_effect = {
	# Log our scheme launcher so that we can refer to them down the line.
	save_scope_as = scheme_launcher
	# Log all the currently on-going schemes.
	## We do it this way being we can't guarantee mutually exclusive targets with non-character scheme targets any more: we can't just look for "X's murder scheme against Y", because X might be plotting against no target whatsoever and have multiple schemes of that type against nothing.
	every_scheme = { add_to_list = current_schemes_list }
	# Now start the scheme.
	start_scheme = {
		type = $SCHEME_TYPE$
		$TARGET_TYPE$ = $TARGET_SCOPE$
	}
	# And grab the scheme's scope.
	random_scheme = {
		limit = {
			NOT = { is_in_list = current_schemes_list }
		}
		save_scope_as = new_scheme
	}
	scope:new_scheme ?= {
		# If we have a custom charge threshold to complete, set that here.
		## Sway.
		if = {
			limit = { scheme_type = sway }
			set_variable = {
				name = custom_charge_threshold
				value = 5
			}
		}
	}
}

add_scheme_starting_opportunities_intrigue_effect = {
	if = {
		limit = { scheme_owner.intrigue >= scheme_starting_opportunities_per_intrigue_threshold_value }
		change_opportunities = {
			value = scheme_owner.intrigue
			subtract = scheme_starting_opportunities_per_intrigue_threshold_value
			divide = scheme_starting_opportunities_per_intrigue_increment_value
			ceiling = yes
			max = 4
		}
	}
}

##################################################
# Scheme Pulse Action Effects

# How many months should we wait before another pulse action can be queued?
scheme_pulse_action_sort_cooldown_effect = {
	set_variable = {
		name = scheme_pulse_action_on_cooldown
		value = yes
		months = 8
	}
}

##################################################
# Countermeasure Effects

inform_player_of_relevant_countermeasure_activated_effect = {
	every_player = {
		limit = {
			any_scheme = {
				scheme_target_character ?= root
				has_variable = apply_countermeasures
			}
		}
		send_interface_message = {
			type = msg_countermeasure_change
			title = countermeasures.t.target_changes
			desc = countermeasures.desc.$COUNTERMEASURE$
			right_icon = root
		}
	}
}

dispute_borders_scheme_prep_effect = {
	save_scope_as = scheme
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.8001
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

subsume_province_scheme_prep_effect = {
	save_scope_as = scheme
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.8011
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}

raid_estate_opinion_effect = {
	$TARGET$ = { save_temporary_scope_as = target_temp }
	$OWNER$ = { save_temporary_scope_as = owner_temp }
	scope:target_temp.house.house_head ?= {
		# OPINION
		add_opinion = {
			target = scope:owner_temp
			modifier = raided_estate_crime
		}
		# FEUD
		if = {
			limit = { has_relation_rival = scope:owner_temp }
			if = {
				limit = { valid_for_feud_events_with_target_trigger = { TARGET = scope:owner_temp } }
				house_feud_start_effect = {
					# Feuding House Head
					ACTOR = scope:target_temp
					# Target House Head
					TARGET = scope:owner_temp
					# Feud Reason
					REASON = raid_estate
					# House Member attacker if relevant 
					ATTACKER = scope:target_temp
					# House Member victim if relevant
					VICTIM = scope:owner_temp
				}
			}
		}
		# RELATION
		progress_towards_rival_effect = {
			REASON = rival_raid_estate
			CHARACTER = scope:owner_temp
			OPINION = 0
		}
	}
	# VICTIM OPINION
	every_in_list = {
		list = target_victims
		if = {
			limit = { exists = scope:scheme_maim }
			add_opinion = {
				target = scope:owner_temp
				modifier = raid_estate_maimed_opinion
			}
		}
	}
	scope:target_temp.house = {
		# HOUSE RELATION
		change_house_relation_effect = {
			HOUSE = scope:owner_temp.house
			VALUE = house_relation_damage_major_value
			REASON = raided_estate
			CHAR = scope:owner_temp
			TARGET_CHAR = scope:target_temp
			TITLE = scope:dummy_gender
		}
		# OTHER MEMBER OPINION
		every_house_member = {
			custom = every_other_raid_estate_house_member_tt
			limit = {
				NOR = {
					this = scope:target_temp
					is_in_list = target_victims
				}
			}
			add_opinion = {
				target = scope:owner_temp
				modifier = raid_estate_house_opinion
			}
		}
	}
	# CRIME
	scope:owner_temp.top_liege ?= {
		if = {
			limit = {
				this != scope:owner_temp
				this != scope:target_temp
				NOT = { scope:owner_temp.var:raid_estate_permission ?= scope:target_temp.house }
			}
			add_opinion = {
				target = scope:owner_temp
				modifier = raid_estate_vassal_crime
			}
		}
	}
}

education_5_scheme_progress_effect = {
	if = {
		limit = {
			scope:actor = { has_trait = education_$SKILL$_5 }
		}
		scope:new_scheme ?= {
			add_scheme_progress = {
				value = scheme_progress_gain
				multiply = 3
			}
		}
	}
}

steal_herd_success_effect = {
	if = {
		limit = {
			scope:target = {
				exists = domicile
				domicile.herd > 0
			}
		}
		scope:target = {
			if = {
				limit = {
					scope:owner = {
						OR = {
							is_vassal_of = scope:target
							is_liege_or_above_of = scope:target
						}
					}
				}
				add_opinion = {
					target = scope:owner
					modifier = stole_my_herd_crime
				}
			}
			else = {
				add_opinion = {
					target = scope:owner
					modifier = stole_my_herd
				}
			}
			if = {
				limit = {
					is_independent_ruler = no
					liege = {
						NOT = { is_liege_or_above_of = scope:owner }
					}
				}
				liege = {
					add_opinion = {
						target = scope:owner
						modifier = stole_vassals_herd
					}
				}
			}
			custom_tooltip = {
				text = steal_herd_vassal_tt
				every_powerful_vassal = {
					limit = { 
						NOR = { 
							this = scope:target
							this = scope:owner
						} 
					}
					add_opinion = {
						target = scope:owner
						modifier = stole_lieges_herd
					}
				}
			}
		}
		scope:owner = {
			if = {
				limit = {
				   scope:scheme = { exists = var:steal_herd_low }
				}
				if = {
					limit = {
						has_character_flag = steal_herd_extra
					}
					scope:target = {
						pay_herd = {
							target = scope:owner
							value = {
								value = domicile.ten_percent_current_herd_value
								max = scope:owner.domicile.fifty_percent_current_herd_value
							}
						}
					}
				}
				else = {
					scope:target = {
						pay_herd = {
							target = scope:owner
							value = {
								value = domicile.five_percent_current_herd_value
								max = scope:owner.domicile.fifty_percent_current_herd_value
							}
						}
					}
				}
			}
			else_if = {
				limit = {
					scope:scheme = { exists = var:steal_herd_normal }
				}
				if = {
					limit = {
						has_character_flag = steal_herd_extra
					}
					scope:target = {
						pay_herd = {
							target = scope:owner
							value = {
								value = domicile.fifteen_percent_current_herd_value
								max = scope:owner.domicile.fifty_percent_current_herd_value
							}
						}
					}
				}
				else = {
					scope:target = {
						pay_herd = {
							target = scope:owner
							value = {
								value = domicile.ten_percent_current_herd_value
								max = scope:owner.domicile.fifty_percent_current_herd_value
							}
						}
					}
				}
			}
			else_if = {
				limit = {
					scope:scheme = { exists = var:steal_herd_high }
				}
				if = {
					limit = {
						has_character_flag = steal_herd_extra
					}
					scope:target = {
						pay_herd = {
							target = scope:owner
							value = {
								value = domicile.twenty_percent_current_herd_value
								max = scope:owner.domicile.fifty_percent_current_herd_value
							}
						}
					}
				}
				else = {
					scope:target = {
						pay_herd = {
							target = scope:owner
							value = {
								value = domicile.fifteen_percent_current_herd_value
								max = scope:owner.domicile.fifty_percent_current_herd_value
							}
						}
					}
				}
			}
		}
	}
	
	scope:owner = {
		if = {
			limit = {
				has_character_flag = steal_herd_money
			}
			scope:target = {
				pay_short_term_gold = {
					target = scope:owner
					gold = medium_gold_value
				}
			}
			remove_character_flag = steal_herd_money
		}

		if = {
			limit = {
				has_character_flag = steal_herd_extra
			}
			remove_character_flag = steal_herd_extra
		}
	}
}

steal_herd_failure_effect = {
	#Add Watchful Modifier to the target
	scope:target = {	
		add_character_modifier = {
			modifier = watchful_modifier
			days = watchful_modifier_duration
		}

		add_opinion = {
			target = scope:owner
			modifier = attempted_to_steal_herd_crime
		}
	}
	#Lose some prestige
	scope:owner = {
		add_prestige = minor_prestige_loss
	}
}

purge_ai_scheme_slots_effect = {
	scope:scheme = {
		if = {
			limit = {
				any_scheme_agent_slot = {
					is_filled = no
				}
			}
			every_scheme_agent_slot = {
				limit = {
					is_filled = no
				}
				save_scope_as = slot_purge
				prev = { remove_agent_slot = scope:slot_purge }
			}
		}
	}
}

coup_ceremonial_liege_scheme_prep_effect = {
	save_scope_as = scheme
	save_scope_value_as = {
		name = follow_up_event
		value = event_id:scheme_critical_moments.2921
	}
	if = {
		limit = {
			NOT = { exists = scope:suppress_next_event }
		}
		scheme_owner = { trigger_event = scheme_critical_moments.0002 }
	}
}
