﻿### EK NOTE: Added our own court types

# EFFECTS RELATONG TO THE DIFFERENT COURT TYPES

#court_trait_handle_multiple_scopes_effect
#court_trait_save_scopes_and_send_interface_message_effect
#assign_court_type_traits_to_courtiers_effect


# Effect to save down the multiple scopes needed to send interface messages about courtiers gaining/leveling court type traits 
court_trait_handle_multiple_scopes_effect = {
	#Save down two scopes for the gathered message
	random_courtier = {
		limit = {
			ep1_courtier_valid_for_court_trait_$TRAIT_LEVEL$_trigger = { TYPE = $COURT_TYPE$ }
			is_of_major_interest_to_root_trigger = yes
		}
		alternative_limit = {
			ep1_courtier_valid_for_court_trait_$TRAIT_LEVEL$_trigger = { TYPE = $COURT_TYPE$ }
			is_of_minor_interest_to_root_trigger = yes
		}
		alternative_limit = {
			ep1_courtier_valid_for_court_trait_$TRAIT_LEVEL$_trigger = { TYPE = $COURT_TYPE$ }
		}
		save_scope_as = courtier_1
	}
	random_courtier = {
		limit = {
			ep1_courtier_valid_for_court_trait_$TRAIT_LEVEL$_trigger = { TYPE = $COURT_TYPE$ }
			is_of_major_interest_to_root_trigger = yes
			NOT = { this = scope:courtier_1 }
		}
		alternative_limit = {
			ep1_courtier_valid_for_court_trait_$TRAIT_LEVEL$_trigger = { TYPE = $COURT_TYPE$ }
			is_of_minor_interest_to_root_trigger = yes
			NOT = { this = scope:courtier_1 }
		}
		alternative_limit = {
			ep1_courtier_valid_for_court_trait_$TRAIT_LEVEL$_trigger = { TYPE = $COURT_TYPE$ }
			NOT = { this = scope:courtier_1 }
		}
		save_scope_as = courtier_2
	}
	set_variable = {
		name = num_other_relevant_courtiers
		value = 1
	}
	every_courtier = {
		limit = {
			ep1_courtier_valid_for_court_trait_$TRAIT_LEVEL$_trigger = { TYPE = $COURT_TYPE$ }
		}
		change_trait_rank = {
			trait = $COURT_TYPE$_court
			rank = 1
		}
		root = {
			change_variable = {
				 name = num_other_relevant_courtiers
				 add = 1
			}
		}
	}
}

# Effect to send interface messages about courtiers gaining/leveling court specific traits
court_trait_save_scopes_and_send_interface_message_effect = {
	# Second trait level at CG level 8
	if = {
		limit = {
			any_courtier = {
				ep1_courtier_valid_for_court_trait_2_trigger = { TYPE = $COURT_TYPE$ }
			}
		}
		# If it's more than two we send a gathered message
		if = {
			limit = {
				any_courtier = {
					ep1_courtier_valid_for_court_trait_2_trigger = { TYPE = $COURT_TYPE$ }
					count > 2
				}
			}
			court_trait_handle_multiple_scopes_effect = {
				COURT_TYPE = $COURT_TYPE$
				TRAIT_LEVEL = 2
			}
			send_interface_message = {
				type = msg_courtiers_gain_court_traits
				title = multiple_courtiers_gained_court_type_trait_title
				left_icon = scope:courtier_1
				right_icon = scope:courtier_2
				custom_tooltip = multiple_courtiers_gained_$COURT_TYPE$_2_trait_desc
			}
			remove_variable = num_other_relevant_courtiers
		}
		# Else we send one message per courtier
		else = {
			every_courtier = {
				limit = {
					ep1_courtier_valid_for_court_trait_2_trigger = { TYPE = $COURT_TYPE$ }
				}
				save_scope_as = courtier
				root = {
					send_interface_message = {
						type = msg_courtiers_gain_court_traits
						title = courtier_gained_court_type_trait_title
						right_icon = scope:courtier
						scope:courtier = {
							change_trait_rank = {
								trait = $COURT_TYPE$_court
								rank = 1
							}
						}		
					}
				}
			}
		}
	}
	# First trait level at CG level 5
	if = {
		limit = {
			any_courtier = {
				ep1_courtier_valid_for_court_trait_1_trigger = { TYPE = $COURT_TYPE$ }
			}
		}
		# If it's more than two we send a gathered message
		if = {
			limit = {
				any_courtier = {
					ep1_courtier_valid_for_court_trait_1_trigger = { TYPE = $COURT_TYPE$ }
					count > 2
				}
			}
			court_trait_handle_multiple_scopes_effect = {
				COURT_TYPE = $COURT_TYPE$
				TRAIT_LEVEL = 1
			}
			send_interface_message = {
				type = msg_courtiers_gain_court_traits
				title = multiple_courtiers_gained_court_type_trait_title
				left_icon = scope:courtier_1
				right_icon = scope:courtier_2
				custom_tooltip = multiple_courtiers_gained_$COURT_TYPE$_1_trait_desc
			}
		}
		# Else we send one message per courtier
		else = {
			every_courtier = {
				limit = {
					ep1_courtier_valid_for_court_trait_1_trigger = { TYPE = $COURT_TYPE$ }
				}
				save_scope_as = courtier
				root = {
					send_interface_message = {
						type = msg_courtiers_gain_court_traits
						title = courtier_gained_court_type_trait_title
						right_icon = scope:courtier
						scope:courtier = {
							change_trait_rank = {
                                trait = $COURT_TYPE$_court
                                rank = 1
                            }
						}
						#custom_tooltip = courtier_gained_$COURT_TYPE$_1_trait_desc
					}
				}
			}
		}
	}
}

# Main effect for handling courtiers gaining/leveling court type traits 
assign_court_type_traits_to_courtiers_effect = {
	save_scope_value_as = {
		name = cgv_value
		value = root.court_grandeur_current_level
	}
	# Diplomatic Court
	if = {
		limit = {
			has_court_type = court_diplomatic
			any_courtier = {
				days_since_joined_court >= days_to_gain_court_type_trait
				OR = { #Either they have no trait, or they have one we can level
					AND = {
						ep1_courtier_valid_for_court_trait_1_trigger = { TYPE = diplomatic }
					}
					AND = {
						ep1_courtier_valid_for_court_trait_2_trigger = { TYPE = diplomatic }
					}
				}
			}
		}
		court_trait_save_scopes_and_send_interface_message_effect = { COURT_TYPE = diplomatic }
	}
	# Warlike Court
	if = {
		limit = {
			OR = {
				has_court_type = court_warlike
				has_court_type = court_tribal
				has_court_type = court_nomadic
			}
			any_courtier = {
				days_since_joined_court >= days_to_gain_court_type_trait
				OR = { #Either they have no trait, or they have one we can level
					AND = {
						ep1_courtier_valid_for_court_trait_1_trigger = { TYPE = warlike }
					}
					AND = {
						ep1_courtier_valid_for_court_trait_2_trigger = { TYPE = warlike }
					}
				}
			}
		}
		court_trait_save_scopes_and_send_interface_message_effect = { COURT_TYPE = warlike }
	}

	# Administrative Court
	if = {
		limit = {
			has_court_type = court_administrative
			any_courtier = {
				days_since_joined_court >= days_to_gain_court_type_trait
				OR = { #Either they have no trait, or they have one we can level
					AND = {
						ep1_courtier_valid_for_court_trait_1_trigger = { TYPE = administrative }
					}
					AND = {
						ep1_courtier_valid_for_court_trait_2_trigger = { TYPE = administrative }
					}
				}
			}
		}
		court_trait_save_scopes_and_send_interface_message_effect = { COURT_TYPE = administrative }
	}

	# Intrigue Court
	if = {
		limit = {
			has_court_type = court_intrigue
			any_courtier = {
				days_since_joined_court >= days_to_gain_court_type_trait
				OR = { #Either they have no trait, or they have one we can level
					AND = {
						ep1_courtier_valid_for_court_trait_1_trigger = { TYPE = intrigue }
					}
					AND = {
						ep1_courtier_valid_for_court_trait_2_trigger = { TYPE = intrigue }
					}
				}
			}
		}
		court_trait_save_scopes_and_send_interface_message_effect = { COURT_TYPE = intrigue }
	}

	# Scholarly Court
	if = {
		limit = {
			has_court_type = court_scholarly
			any_courtier = {
				days_since_joined_court >= days_to_gain_court_type_trait
				OR = { #Either they have no trait, or they have one we can level
					AND = {
						ep1_courtier_valid_for_court_trait_1_trigger = { TYPE = scholarly }
					}
					AND = {
						ep1_courtier_valid_for_court_trait_2_trigger = { TYPE = scholarly }
					}
				}
			}
		}
		court_trait_save_scopes_and_send_interface_message_effect = { COURT_TYPE = scholarly }
	}
	
	#EK ADDITION: EK court types
	# Scholarly Court
	if = {
		limit = {
			has_court_type = court_magical
			any_courtier = {
				days_since_joined_court >= days_to_gain_court_type_trait
				OR = { #Either they have no trait, or they have one we can level
					AND = {
						ep1_courtier_valid_for_court_trait_1_trigger = { TYPE = magical }
					}
					AND = {
						ep1_courtier_valid_for_court_trait_2_trigger = { TYPE = magical }
					}
				}
			}
		}
		court_trait_save_scopes_and_send_interface_message_effect = { COURT_TYPE = magical }
	}
	#EK ADDITION END
}
 
