﻿namespace = sane_knight

#########################################################################################
## TRIGGERS FOR TRIGGERING EVENTS													   ##
#########################################################################################

## Triggers for knight arrival frequency (Affects which event will fire - i.e how often, if at all, you will attract knights as guests, scales by highest title tier and prestige level)

scripted_trigger sane_knight_01_trigger = {
	is_adult = yes
	is_ai = no
	NOT = {has_character_flag = had_event_sane_knight_arrival_01}
	OR = {
		AND = {
			primary_title.tier = tier_county
			prestige_level = 3
			NOT = {exists = liege}
			}
		AND = {
			primary_title.tier = tier_duchy
			prestige_level = 2
			}
		AND = {
			primary_title.tier = tier_kingdom
			prestige_level = 1
			}
		AND = {
			primary_title.tier = tier_empire
			prestige_level = 0
			}
		}
	}

scripted_trigger sane_knight_02_trigger = {
	is_adult = yes
	is_ai = no
	NOT = {has_character_flag = had_event_sane_knight_arrival_02}
	OR = {
		AND = {
			primary_title.tier = tier_county
			prestige_level = 4
			NOT = {exists = liege}
			}
		AND = {
			primary_title.tier = tier_duchy
			prestige_level = 3
			}
		AND = {
			primary_title.tier = tier_kingdom
			prestige_level = 2
			}
		AND = {
			primary_title.tier = tier_empire
			prestige_level = 1
			}
		}
	}

scripted_trigger sane_knight_03_trigger = {
	is_adult = yes
	is_ai = no
	NOT = {has_character_flag = had_event_sane_knight_arrival_03}
	OR = {
		AND = {
			primary_title.tier = tier_county
			prestige_level = 5
			NOT = {exists = liege}
			}
		AND = {
			primary_title.tier = tier_duchy
			prestige_level = 4
			}
		AND = {
			primary_title.tier = tier_kingdom
			prestige_level = 3
			}
		AND = {
			primary_title.tier = tier_empire
			prestige_level = 2
			}
		}
	}

scripted_trigger sane_knight_04_trigger = { ### AI starts getting knights here - otherwise bogs performance, and they are not great at guest handling regardless
	is_adult = yes
	NOT = {has_character_flag = had_event_sane_knight_arrival_04}
	OR = {
		AND = {
			primary_title.tier = tier_county
			prestige_level = 6
			NOT = {exists = liege}
			}
		AND = {
			primary_title.tier = tier_duchy
			prestige_level = 5
			}
		AND = {
			primary_title.tier = tier_kingdom
			prestige_level = 4
			}
		AND = {
			primary_title.tier = tier_empire
			prestige_level = 3
			}
		}
	}

scripted_trigger sane_knight_05_trigger = {
	is_adult = yes
	NOT = {has_character_flag = had_event_sane_knight_arrival_05}
	OR = {
		AND = {
			primary_title.tier = tier_duchy
			prestige_level = 6
			}
		AND = {
			primary_title.tier = tier_kingdom
			prestige_level = 5
			}
		AND = {
			primary_title.tier = tier_empire
			prestige_level = 4
			}
		}
	}

scripted_trigger sane_knight_06_trigger = {
	is_adult = yes ## No flag requirement since none should be set in this case.
	NOT = {has_character_flag = had_event_sane_knight_arrival_06}
	OR = {
		AND = {
			primary_title.tier = tier_kingdom
			prestige_level = 6
			}
		AND = {
			primary_title.tier = tier_empire
			prestige_level >= 5
			}
		}
	}

#########################################################################################
## TRIGGERING EVENTS																   ##
#########################################################################################
	
## Yearly Knight Arrival - Sets knights to join your court as guests on a random timer, as long as the triggers are met.

sane_knight.0002 = {
	type = character_event
	hidden = yes
	
	trigger = {sane_knight_01_trigger = yes}
	
	immediate = {
		trigger_event = {
			id = sane_knight.0001
			months = { 128 256 }
		}
		add_character_flag = {
			flag = had_event_sane_knight_arrival_01
			years = 16
		}
	}
}

sane_knight.0003 = {
	type = character_event
	hidden = yes
	
	trigger = {sane_knight_02_trigger = yes}
	
	immediate = {
		trigger_event = {
			id = sane_knight.0001
			months = { 64 128 }
		}
		add_character_flag = {
			flag = had_event_sane_knight_arrival_02
			years = 8
		}
	}
}

sane_knight.0004 = {
	type = character_event
	hidden = yes
		
	trigger = {sane_knight_03_trigger = yes}
	
	immediate = {
		trigger_event = {
			id = sane_knight.0001
			months = { 32 64 }
		}
		add_character_flag = {
			flag = had_event_sane_knight_arrival_03
			years = 4
		}
	}
}

sane_knight.0005 = {
	type = character_event
	hidden = yes
	
	trigger = {sane_knight_04_trigger = yes}
	
	immediate = {
		trigger_event = {
			id = sane_knight.0001
			months = { 16 32 }
		}
		add_character_flag = {
			flag = had_event_sane_knight_arrival_04
			years = 2
		}
	}
}

sane_knight.0006 = {
	type = character_event
	hidden = yes
	
	trigger = {sane_knight_05_trigger = yes}
	
	immediate = {
		trigger_event = {
			id = sane_knight.0001
			months = { 8 16 }
		}
		add_character_flag = {
			flag = had_event_sane_knight_arrival_05
			years = 1
		}
	}
}

sane_knight.0007 = {
	type = character_event
	hidden = yes
	
	trigger = {sane_knight_06_trigger = yes}
	
	immediate = {
		trigger_event = {
			id = sane_knight.0001
			months = { 4 8 }
		}
	add_character_flag = {
			flag = had_event_sane_knight_arrival_06
			months = 6
		}
	}
}

#########################################################################################
## TRIGGERED EVENTS																	   ##
#########################################################################################

## One knight joins your court
sane_knight.0001 = {
	hidden = yes
	immediate = {
		save_temporary_scope_as = host

		#Set up a list of provinces, one per duchy in the realm, find all relevant pool characters there
		every_realm_province = {
			if = {
				limit = {
					save_temporary_scope_as = potential_province
					NOT = {
						any_in_list = {
							list = pool_provinces
							county.duchy = scope:potential_province.county.duchy
						}
					}
				}
				add_to_temporary_list = pool_provinces
			}
		}

		every_in_list = {
			list = pool_provinces
			save_temporary_scope_as = pool_province

			every_pool_character = {
				province = scope:pool_province
				limit = {
					prowess >= 10 #make sure this matches all the 10s below
					guest_knight_candidate_trigger = { HOST = root }
				}
				add_to_temporary_list = potential_knights
			}
		}

		#Randomize a good knight from the realm pool characters
		random_in_list = {
			list = potential_knights
			limit = { is_alive = yes }
			weight = {
				base = 1
				modifier = {
					add = {
						value = prowess
						subtract = 10
						multiply = 5
					}
				}
			}
			save_scope_as = knight
		}

		#If no one was found, make one
		if = {
			limit = { NOT = { exists = scope:knight } }

			create_character = {
				location = root.capital_province
				template = pool_repopulate_prowess
				prowess = { 10 18 }
				save_scope_as = knight
			}
		}

		#Add knight to court
		add_visiting_courtier = scope:knight
		send_interface_message = {
			title = sane_knight.0001
			desc = sane_knight.0001.desc
			type = event_prowess_good_desc
			left_icon = scope:knight
		}
	}
}

##################### Difficulty
		
## Events - Triggered
#### Seriously, paradox should just let people use scripted modifiers in game rules... instead of having to resort to hidden events to enforce difficulty rules...

scripted_trigger sane_knight_08_trigger = {
	any_ruler = {
		AND = {
			is_independent_ruler = yes
			is_ai = yes
		}
	}
}

sane_knight.0008 = { ## Apply the building cost discount for AI top lieges and all their vassals that are not players or player vassals. 
	hidden = yes
	trigger = {sane_knight_08_trigger = yes}
	immediate = {
		ROOT = {
		add_to_temporary_list = sane_penalty_pool
		every_vassal_or_below = {add_to_temporary_list = sane_penalty_pool}
		}
		
		every_in_list = {
			list = sane_penalty_pool
			if = {
				limit = {
					is_ai = yes
					OR = {
						NOT = { exists = liege }
						liege = { ## Count at lowest
							is_ai = yes
							OR = {
								NOT = { exists = liege }
								liege = { ## Duke at lowest
									is_ai = yes
									OR = {
										NOT = { exists = liege }
										liege = { ## King at lowest
											is_ai = yes
											OR = {
												NOT = { exists = liege }
												liege = { is_ai = yes } ## Emperor, shouldn't happen
											}
										}
									}
								}
							}
						}
					}
				}
				if = {
					limit = {has_game_rule = very_hard_difficulty}
					add_character_modifier = {
						modifier = vh_difficulty_modifier
						days = 32 ## Will extend each monthly pulse if valid - much smoother than doing a cleanup event!
					}
				}
				else_if = {
					limit = {has_game_rule = hard_difficulty}
					add_character_modifier = {
						modifier = h_difficulty_modifier
						days = 32 ## Will extend each monthly pulse if valid - much smoother than doing a cleanup event!
					}	
				}
				else = {}
			}
		}
	}
}