namespace = witcher

################################################
# Witcher moving around
################################################
# Witcher - Ask ask the liege permission to leave his court
character_event = {
	id = witcher.1
	
	hide_window = yes
	
	min_age = 15
	capable_only = yes
	prisoner = no
	
	trigger = {
		NOT = { culture = wilderness }
		trait = witcher
		in_command = no
		NOT = { has_character_modifier = recent_witcher_work }
		OR ={ 
			NOT = { has_character_flag = witcher_stays_because_of_friendship }
			had_character_flag = { flag = witcher_stays_because_of_friendship days = 365 }
		}
		OR ={ 
			NOT = { has_character_flag = witcher_stays_because_of_greed }
			had_character_flag = { flag = witcher_stays_because_of_greed days = 365 }
		}
		OR ={ 
			NOT = { has_character_flag = witcher_stays_because_of_sloth }
			had_character_flag = { flag = witcher_stays_because_of_sloth days = 365 }
		}
		OR ={ 
			NOT = { has_character_flag = witcher_stays_because_of_pride }
			had_character_flag = { flag = witcher_stays_because_of_pride days = 365 }
		}
		OR ={ 
			NOT = { has_character_flag = witcher_stays_because_of_lust }
			had_character_flag = { flag = witcher_stays_because_of_lust days = 365 }
		}
	}
	
	mean_time_to_happen = { 
		months = 12
		modifier = { factor = 2 has_minor_title = title_court_witcher }
		modifier = { factor = 0.8 trait = diligent }
		modifier = { factor = 2 trait = slothful }
		modifier = { factor = 2 trait = wounded }
		modifier = { factor = 2.5 is_maimed_trigger = yes }
		modifier = {
			factor = 0.9
			liege = { NOT = { reverse_opinion = { who = ROOT value = -25 } } }
		}
		modifier = {
			factor = 0.9
			liege = { NOT = { reverse_opinion = { who = ROOT value = -50 } } }
		}
		modifier = {
			factor = 0.9
			liege = { NOT = { reverse_opinion = { who = ROOT value = -75 } } }
		}
		modifier = {
			factor = 1.4
			liege = { reverse_opinion = { who = ROOT value = 25 } }
		}
		modifier = {
			factor = 1.4
			liege = { reverse_opinion = { who = ROOT value = 50 } }
		}
		modifier = {
			factor = 1.4
			liege = { reverse_opinion = { who = ROOT value = 75 } }
		}
		modifier = {
			factor = 4
			liege = { reverse_has_opinion_modifier = { who = ROOT modifier = opinion_asked_to_stay } }
		}
		modifier = {
			factor = 100
			liege = {
				any_demesne_province = {
					OR = {
						has_province_modifier = vampires
						has_province_modifier = werewolves
						has_province_modifier = kikimoras
						has_province_modifier = hellhounds
						has_province_modifier = rotfiends
						has_province_modifier = drowners
						has_province_modifier = nekkers
					}
				}
			}
		}
		modifier = {
			factor = 0.5
			any_playable_ruler = { has_character_flag = invited_witcher }
		}
	}
	
	option = {
		name = OK
		liege = { character_event = { id = witcher.2 } }
	}
}
# Liege - The witcher has informed you of his desire to leave your court
character_event = {
	id = witcher.2
	desc = EVTDESCwitcher.2 
	picture = GFX_evt_throne_room
	
	is_triggered_only = yes
	
	option = { # Let him leave
		name = EVTOPTAwitcher.2
		custom_tooltip = {
			text = witcher_will_leave
			hidden_tooltip = { FROM = { character_event = { id = witcher.3 } } }
		}
	}
	option = { # Friend - ask to stay
		name = EVTOPTBwitcher.2
		trigger = {
			FROM = {
				is_friend = ROOT
				NOT = { has_character_flag = witcher_stays_because_of_friendship }
			}
		}
		custom_tooltip = { text = witcher_will_stay_longer }
		FROM = { set_character_flag = witcher_stays_because_of_friendship }
	}
	option = { # Greedy witcher - bribe to stay
		name = EVTOPTCwitcher.2
		trigger = { 
			FROM = {
				trait = greedy
				NOT = { has_character_flag = witcher_stays_because_of_greed }
			}
		}
		custom_tooltip = { text = witcher_will_stay_longer }
		wealth = -10
		FROM = {
			wealth = 10
			set_character_flag = witcher_stays_because_of_greed
		}
	}
	option = { # Slothful witcher - convince to stay
		name = EVTOPTDwitcher.2
		trigger = { 
			FROM = {
				trait = slothful
				NOT = { has_character_flag = witcher_stays_because_of_sloth }
			}
		}
		custom_tooltip = { text = witcher_will_stay_longer }
		FROM = { set_character_flag = witcher_stays_because_of_sloth }
		prestige = -20
	}
	option = { # Proud witcher - give minor title to stay
		name = EVTOPTEwitcher.2
		trigger = { 
			FROM = {
				trait = proud
				NOT = { has_character_flag = witcher_stays_because_of_pride }
				NOT ={ has_minor_title = title_court_witcher }
			}
		}
		custom_tooltip = { text = witcher_will_stay_longer }
		FROM = {
			give_minor_title = title_court_witcher
			set_character_flag = witcher_stays_because_of_pride
		}
	}
	option = { # Lustful witcher - give minor title to stay
		name = EVTOPTFwitcher.2
		trigger = { 
			FROM = {
				trait = lustful
				has_lover = yes
				NOT = { has_character_flag = witcher_stays_because_of_lust }
			}
			any_courtier = {
				age = 15
				NOT = { has_character_modifier = old_age }
				is_female = yes
				has_lover = no
				is_married = yes
			}
		}
		custom_tooltip = { text = witcher_will_stay_longer }
		FROM = {
			ROOT = { 
				random_courtier = {
					limit = {
						age = 15
						NOT = { has_character_modifier = old_age }
						is_female = yes
						has_lover = no
						is_married = yes
					}
					add_lover = PREVPREV
				}
			}
			set_character_flag = witcher_stays_because_of_lust
		}
	}
}
# Witcher - Leave to ...
character_event = {
	id = witcher.3
	
	hide_window = yes
	is_triggered_only = yes
	
	immediate = {
		clr_character_flag = witcher_stays_because_of_friendship
		clr_character_flag = witcher_stays_because_of_greed
		clr_character_flag = witcher_stays_because_of_sloth
		clr_character_flag = witcher_stays_because_of_pride
		clr_character_flag = witcher_stays_because_of_lust
	}
	
	option = { # ... neighbor province with monster problems
		name = OK
		trigger = {
			liege = {
				any_demesne_province = {
					any_neighbor_province = {
						owner = {
							NOT = { character = liege }
							any_courtier = { NOT = { trait = witcher } }
							NOT = { culture = wilderness }
						}
						OR = {
							has_province_modifier = vampires
							has_province_modifier = werewolves
							has_province_modifier = kikimoras
							has_province_modifier = hellhounds
							has_province_modifier = rotfiends
							has_province_modifier = drowners
							has_province_modifier = nekkers
						}
					}
				}
			}
		}
		liege = {
			random_demesne_province = {
				limit = {
					any_neighbor_province = {
						owner = {
							NOT = { character = liege }
							any_courtier = { NOT = { trait = witcher } }
							NOT = { culture = wilderness }
						}
						OR = {
							has_province_modifier = vampires
							has_province_modifier = werewolves
							has_province_modifier = kikimoras
							has_province_modifier = hellhounds
							has_province_modifier = rotfiends
							has_province_modifier = drowners
							has_province_modifier = nekkers
						}
					}
				}
				random_neighbor_province = {
					limit = {
						owner = {
							NOT = { character = liege }
							any_courtier = { NOT = { trait = witcher } }
							NOT = { culture = wilderness }
						}
						OR = {
							has_province_modifier = vampires
							has_province_modifier = werewolves
							has_province_modifier = kikimoras
							has_province_modifier = hellhounds
							has_province_modifier = rotfiends
							has_province_modifier = drowners
							has_province_modifier = nekkers
						}
					}
					owner = {
						reverse_banish = ROOT
						character_event = { id = witcher.4 }
					}
				}
			}
		}
		ai_chance = { factor = 100 }
	}
	option = { # ... random neighbor province where any witcher haven't recently visited
		name = OK
		trigger = {
			liege = {
				any_demesne_province = {
					any_neighbor_province = {
						owner = {
							NOT = { character = liege }
							any_courtier = { NOT = { trait = witcher } }
							NOT = { culture = wilderness }
						}
						NOT = { has_province_modifier = monster_purge }
					}
				}
			}
		}
		liege = {
			random_demesne_province = {
				limit = {
					any_neighbor_province = {
						owner = {
							NOT = { character = liege }
							any_courtier = { NOT = { trait = witcher } }
							NOT = { culture = wilderness }
						}
						NOT = { has_province_modifier = monster_purge }
					}
				}
				random_neighbor_province = {
					limit = {
						owner = {
							NOT = { character = liege }
							any_courtier = { NOT = { trait = witcher } }
							NOT = { culture = wilderness }
						}
						NOT = { has_province_modifier = monster_purge }
					}
					owner = {
						reverse_banish = ROOT
						character_event = { id = witcher.4 }
					}
				}
			}
		}
		ai_chance = { factor = 10 }
	}
	option = { # ... random neighbor province
		name = OK
		liege = {
			random_demesne_province = {
				limit = {
					any_neighbor_province = {
						owner = {
							NOT = { character = liege }
							any_courtier = { NOT = { trait = witcher } }
							NOT = { culture = wilderness }
						}
					}
				}
				random_neighbor_province = {
					limit = {
						owner = {
							NOT = { character = liege }
							any_courtier = { NOT = { trait = witcher } }
							NOT = { culture = wilderness }
						}
					}
					owner = {
						reverse_banish = ROOT
						character_event = { id = witcher.4 }
					}
				}
			}
		}
		ai_chance = { factor = 1 }
	}
	option = { # ... the court of a ruler who invited witcher
		name = OK
		trigger = {
			any_playable_ruler = { has_character_flag = invited_witcher }
		}
		random_playable_ruler = {
			limit = {
				has_character_flag = invited_witcher
				any_courtier = { NOT = { trait = witcher } }
				NOT = { culture = wilderness }
			}
			reverse_banish = ROOT
			character_event = { id = witcher.4 }
		}
		ai_chance = { factor = 1000 }
	}
}
# Liege - A witcher has arrived in your court
character_event = {
	id = witcher.4
	desc = EVTDESCwitcher.4
	picture = GFX_evt_throne_room
	
	is_triggered_only = yes
	
	option = { # OK
		name = EVTOPTAwitcher.4
		clr_character_flag = invited_witcher
		ai_chance = {
			factor = 10
		}
	}
	option = { # I have no need for the witcher
		name = EVTOPTBwitcher.4
		trigger = { NOT = { has_character_flag = invited_witcher } }
		FROM = { character_event = { id = witcher.3 } }
		ai_chance = {
			factor = 5
			modifier = { factor = 2 trait = racist }
		}
	}
	option = { # Throw him in prison
		name = EVTOPTBwitcher.4
		tooltip_info = racist
		trigger = {
			NOT = { has_character_flag = invited_witcher }
			trait = racist
		}
		FROM = { imprison = ROOT }
		ai_chance = {
			factor = 2
			modifier = { factor = 2 trait = deceitful }
			modifier = { factor = 2 trait = wroth }
			modifier = { factor = 2 trait = impaler }
			modifier = { factor = 2 trait = cruel }
		}
	}
}

################################################
# Witcher generic monster hunting
################################################
# Witcher - Selecting province
character_event = {
	id = witcher.200
	
	hide_window = yes
	
	min_age = 15
	capable_only = yes
	prisoner = no
	
	trigger = {
		NOT = { culture = wilderness }
		trait = witcher
		liege = {
			any_demesne_province = {
				OR = {
					has_province_modifier = vampires
					has_province_modifier = werewolves
					has_province_modifier = kikimoras
					has_province_modifier = hellhounds
					has_province_modifier = rotfiends
					has_province_modifier = drowners
					has_province_modifier = nekkers
				}
			}
		}
	}
	
	mean_time_to_happen = { 
		days = 60
		modifier = { factor = 0.5 has_minor_title = title_court_witcher }
		modifier = { factor = 0.5 trait = diligent }
		modifier = { factor = 0.8 trait = brave }
		modifier = { factor = 1.5 trait = craven }
		modifier = { factor = 2 trait = slothful }
		modifier = { factor = 5 trait = wounded }
		modifier = { factor = 6 is_maimed_trigger = yes }
	}
	
	option = {
		name = OK
		liege = {
			random_demesne_province = {
				limit = {
					OR = {
						has_province_modifier = vampires
						has_province_modifier = werewolves
						has_province_modifier = kikimoras
						has_province_modifier = hellhounds
						has_province_modifier = rotfiends
						has_province_modifier = drowners
						has_province_modifier = nekkers
					}
				}
				random_list = {
					900 = {
						province_event = { id = witcher.201 }
					}
					90 = { # Witcher got wounded
						province_event = { id = witcher.201 }
						ROOT = { add_trait = wounded }
					}
					9 = { # Witcher got maimed
						province_event = { id = witcher.201 }
						ROOT = { add_maimed_trait_effect = yes }
					}
					1 = { # Witcher died
						if = {
							limit = { ROOT = { NOT = { has_character_modifier = protection_spell } } }
							ROOT = { death = { death_reason = death_monsters } }
							owner = { character_event = { id = witcher.203 } }
						}
						if = {
							limit = { ROOT = { has_character_modifier = protection_spell } }
							province_event = { id = witcher.201 }
						}
					}
				}
			}
		}
	}
}
# Province - Removing monster modifiers
province_event = {
	id = witcher.201
	
	hide_window = yes
	is_triggered_only = yes
	
	immediate = {
		remove_province_modifier = vampires
		remove_province_modifier = werewolves
		remove_province_modifier = kikimoras
		remove_province_modifier = hellhounds
		remove_province_modifier = rotfiends
		remove_province_modifier = drowners
		remove_province_modifier = nekkers
		add_province_modifier = { name = monster_purge duration = 365 hidden = yes }
		FROM = { 
			add_blood_splatter_effect = yes
			add_character_modifier = { 
				name = recent_witcher_work
				duration = 180
				hidden = yes
			}
		}
	}
	
	option = {
		name = OK
		owner = { letter_event = { id = witcher.202 } }
	}
}
# Liege - Notification - Witcher cleaned the province
letter_event = {
	id = witcher.202
	desc = EVTDESCwitcher.202
	
	is_triggered_only = yes
	show_from_from = yes
	
	option = {
		name = OK
		wealth = -10
		FROMFROM = { wealth = 10 }
	}
}
# Liege - Notification - Witcher died cleaning the province
character_event = {
	id = witcher.203
	desc = EVTDESCwitcher.203
	picture = GFX_evt_bloody_man
	
	is_triggered_only = yes
	
	option = {
		name = EVTOPTAwitcher.203
	}
}

################################################
# Spawning witcher
################################################

# Ruler - create witcher
character_event = {
	id = witcher.301
	
	hide_window = yes
	
	capable_only = yes
	prisoner = no
	only_rulers = yes
	
	trigger = {
		witcher_order = {
			num_of_society_members < 5
		}
		any_courtier = { NOT = { trait = witcher } }
		NOT = { culture = wilderness }
	}
	
	mean_time_to_happen = { 
		days = 100
		modifier = { factor = 0.7 any_demesne_province = { has_province_modifier = vampires } }
		modifier = { factor = 0.7 any_demesne_province = { has_province_modifier = werewolves } }
		modifier = { factor = 0.7 any_demesne_province = { has_province_modifier = kikimoras } }
		modifier = { factor = 0.7 any_demesne_province = { has_province_modifier = hellhounds } }
		modifier = { factor = 0.7 any_demesne_province = { has_province_modifier = rotfiends } }
		modifier = { factor = 0.7 any_demesne_province = { has_province_modifier = drowners } }
		modifier = { factor = 0.7 any_demesne_province = { has_province_modifier = nekkers } }
		modifier = { factor = 0.7 trait = tolerant }
		modifier = { factor = 1.5 trait = racist }
		modifier = { factor = 1.5 any_demesne_province = { has_province_modifier = monster_purge } }
		modifier = { factor = 0.1 has_character_flag = invited_witcher }
	}
	
	option = {
		name = OK
		create_random_soldier = {
			random_traits = yes
			culture = witcher_culture
			dynasty = none
			female = no
			trait = witcher
			historical = yes
		}
		new_character = {
			random_list = {
				50 = { add_trait = trained_warrior }
				40 = { add_trait = skilled_warrior }
				10 = { add_trait = master_warrior }
			}
			remove_trait = weak
			remove_trait = feeble
			remove_trait = imbecile
			remove_trait = dwarf
			remove_trait = clubfooted
			remove_trait = hunchback
			remove_trait = inbred
			
			join_society = witcher_order
			character_event = { id = witcher.302 }
		}
	}
}
# Ping witcher
character_event = {
	id = witcher.302
	
	hide_window = yes
	is_triggered_only = yes
	
	option = {
		name = OK
		FROM = { character_event = { id = witcher.4 } }
	}
}

################################################
# Witcher flavor events
################################################
# Lord - Witcher in prison when have monster infestation
character_event = {
	id = witcher.1000
	desc = EVTDESCwitcher.1000
	picture = GFX_evt_into_the_dungeon
	
	min_age = 15
	capable_only = yes
	only_rulers = yes
	prisoner = no
	
	trigger = {
		NOT = { culture = wilderness }
		any_courtier ={
			trait = witcher
			prisoner = yes
		}
		any_demesne_province = {
			OR = {
				has_province_modifier = vampires
				has_province_modifier = werewolves
				has_province_modifier = kikimoras
				has_province_modifier = hellhounds
				has_province_modifier = rotfiends
				has_province_modifier = drowners
				has_province_modifier = nekkers
			}
		}
		NOT = { has_character_flag = witcher_rot_in_prison }
	}
	
	mean_time_to_happen = { 
		months = 12
	}
	
	option = { # There is no need for others to die from monsters when we have a witcher
		name = EVTOPTAwitcher.1000
		hidden_tooltip = {
			random_demesne_province = {
				limit = {
					OR = {
						has_province_modifier = vampires
						has_province_modifier = werewolves
						has_province_modifier = kikimoras
						has_province_modifier = hellhounds
						has_province_modifier = rotfiends
						has_province_modifier = drowners
						has_province_modifier = nekkers
					}
				}
				random_list = {
					999 = {
						province_event = { id = witcher.1001 days = 5 }
					}
					1 = { # Witcher died
						if = {
							limit = {
								ROOT ={
									any_courtier = {
										NOT = { has_character_modifier = protection_spell }
										trait = witcher
										prisoner = yes
									}
								}
							}
							ROOT ={
								random_courtier = {
									limit = {
										NOT = { has_character_modifier = protection_spell }
										trait = witcher
										prisoner = yes
									}
									death = { death_reason = death_monsters  }
								}
								character_event = { id = witcher.203 days = 5 }
							}
						}
					}
				}
			}
		}
	}
	option = { # Let him rot
		name = EVTOPTBwitcher.1000
		set_character_flag = witcher_rot_in_prison
	}
}
# Province - Removing monster modifiers
province_event = {
	id = witcher.1001
	
	hide_window = yes
	is_triggered_only = yes
	
	immediate = {
		remove_province_modifier = vampires
		remove_province_modifier = werewolves
		remove_province_modifier = kikimoras
		remove_province_modifier = hellhounds
		remove_province_modifier = rotfiends
		remove_province_modifier = drowners
		remove_province_modifier = nekkers
		add_province_modifier = { name = monster_purge duration = 365 hidden = yes }
	}
	
	option = {
		name = OK
		FROM = {
			character_event = { id = witcher.1002 }
			random_courtier = {
				limit = {
					trait = witcher
					prisoner = yes
				}
				character_event = { id = witcher.3 }
			}
		}
	}
}
# Lord - Notification - Witcher cleaned the province and escaped
character_event = {
	id = witcher.1002
	desc = EVTDESCwitcher.1002
	picture = GFX_evt_courier
	
	is_triggered_only = yes
	
	option = {
		name = EVTOPTAwitcher.1002
	}
}
# Courtier complaining about employing witcher
character_event = {
	id = witcher.1003
	desc = EVTDESCwitcher.1003
	picture = GFX_evt_courtiers_talking
	
	min_age = 15
	capable_only = yes
	prisoner = no
	only_rulers = yes
	
	trigger = {
		trait = human_race
		any_courtier = {
			is_adult = yes
			trait = human_race
			NOT = { trait = witcher }
		}
		any_courtier = { trait = witcher }
	}
	
	mean_time_to_happen = {
		months = 2000
	}
	
	option = { # Witcher will stay
		name = EVTOPTAwitcher.1003
		random_courtier = {
			limit = {
				is_adult = yes
				trait = human_race
				NOT = { trait = witcher }
			}
			opinion = { modifier = opinion_dislike who = ROOT years = 2 }
		}
	}
	option = { # Banish witcher
		name = EVTOPTBwitcher.1003
		random_courtier = {
			limit = { trait = witcher }
			character_event = { id = witcher.3 tooltip = EVTTOOLTIPwitcher.1003 }
		}
	}
}
# Witcher seduces a woman
