﻿######################
# Epidemics
######################

#### OUTBREAK CHANCE ###
# Chance for an outbreak of this intensity to spawn on a province per year
# % from 0-100 inclusive
# root = potential province

### CONTROL VALUES ###
# These should be enough to change the balance of epidemics 

# Outbreak

outbreak_chance_base_extra_low = 0.0005
outbreak_chance_base_very_low = 0.001
outbreak_chance_base_low = 0.01
outbreak_chance_base_medium = 0.02
outbreak_chance_base_high = 0.04
outbreak_chance_base_very_high = 0.12

outbreak_increase_add_low = 0.004
outbreak_increase_add_medium = 0.008
outbreak_increase_add_high = 0.016
outbreak_increase_add_very_high = 0.032
outbreak_increase_add_extra_high = 0.064

outbreak_decrease_add_low = -0.003
outbreak_decrease_add_medium = -0.008
outbreak_decrease_add_high = -0.016
outbreak_decrease_add_very_high = -0.032
outbreak_decrease_add_unlikely = -0.064

outbreak_increase_mult_low = 0.1
outbreak_increase_mult_medium = 0.2
outbreak_increase_mult_high = 0.4
outbreak_increase_mult_very_high = 0.8

outbreak_decrease_mult_low = -0.2
outbreak_decrease_mult_medium = -0.35
outbreak_decrease_mult_high = -0.6
outbreak_decrease_mult_very_high = -0.8
outbreak_decrease_mult_unlikely = -0.995

# Spread

spread_chance_base_low = 3.5
spread_chance_base_medium = 5
spread_chance_base_high = 9 

spread_increase_add_low = 2
spread_increase_add_medium = 3
spread_increase_add_high = 4

spread_decrease_add_low = -0.5
spread_decrease_add_medium = -1
spread_decrease_add_high = -2
spread_decrease_add_very_high = -3

spread_increase_mult_low = 0.25
spread_increase_mult_medium = 0.75
spread_increase_mult_high = 1
spread_increase_mult_very_high = 1.5

spread_decrease_mult_low = -0.25
spread_decrease_mult_medium = -0.5
spread_decrease_mult_high = -0.75
spread_decrease_mult_unlikely = -0.991


outbreak_chance_minor_default_value = {
	value = outbreak_chance_base_low
	#Buildings
	if = {
		limit = {
			num_buildings >= 4
		}
		add = {
			value = num_buildings
			multiply = outbreak_increase_add_low
		}
	}

	#Tradeports
	if = {
		limit = {
			has_building_or_higher = common_tradeport_01
		}
		add = outbreak_increase_add_low
	}
	if = {
		limit = {
			has_building_or_higher = common_tradeport_02
		}
		add = outbreak_increase_add_low
	}
	if = {
		limit = {
			has_building_or_higher = common_tradeport_03
		}
		add = outbreak_increase_add_low
	}
	if = {
		limit = {
			has_building_or_higher = common_tradeport_04
		}
		add = outbreak_increase_add_medium
	}
	if = {
		limit = {
			has_building_or_higher = common_tradeport_05
		}
		add = outbreak_increase_add_medium
	}
	if = {
		limit = {
			has_building_or_higher = common_tradeport_06
		}
		add = outbreak_increase_add_high
	}
	if = {
		limit = {
			has_building_or_higher = common_tradeport_07
		}
		add = outbreak_increase_add_high
	}
	if = {
		limit = {
			has_building_or_higher = common_tradeport_08
		}
		add = outbreak_increase_add_high
	}

	#Markets
	if = {
		limit = {
			has_building_or_higher = market_villages_01
		}
		add = outbreak_increase_add_low
	}
	if = {
		limit = {
			has_building_or_higher = market_villages_02
		}
		add = outbreak_increase_add_low
	}

	#Guild Halls
	if = {
		limit = {
			has_building_or_higher = guild_halls_01
		}
		add = outbreak_increase_add_high
	}
	if = {
		limit = {
			has_building_or_higher = guild_halls_04
		}
		add = outbreak_increase_add_high
	}
	if = {
		limit = {
			has_building_or_higher = guild_halls_06
		}
		add = outbreak_increase_add_high
	}
	if = {
		limit = {
			has_building_or_higher = guild_halls_08
		}
		add = outbreak_increase_add_high
	}

	if = {
		limit = {
			OR = {
				has_global_variable = is_in_tutorial
				AND = {
					has_global_variable = start_epidemic_grace
					OR = {
						county.holder = { is_ai = no }
						county.holder = {
							any_liege_or_above = { is_ai = no }
						}
					}
				}
			}
		}
		multiply = 0
	}
}

outbreak_chance_minor_mult_value = {
	value = 1

	# Game rules
	if = {
		limit = {
			has_game_rule = epidemic_frequency_often
		}
		add = outbreak_increase_mult_low
	}
	else_if = {
		limit = {
			has_game_rule = epidemic_frequency_very_often
		}
		add = outbreak_increase_mult_medium
	}
	else_if = {
		limit = {
			has_game_rule = epidemic_frequency_doomsday
		}
		add = outbreak_increase_mult_high
	}
	else_if = {
		limit = {
			has_game_rule = epidemic_frequency_rare
		}
		add = outbreak_decrease_mult_medium
	}
	else_if = {
		limit = {
			has_game_rule = epidemic_frequency_very_rare
		}
		add = outbreak_decrease_mult_high
	}

	#Development
	add = {
		value = county.development_level
		multiply = 0.002
	}

	#Era pacing
	if = {
		limit = {
			culture = {
				has_cultural_era_or_later = culture_era_late_medieval
			}
		}
		add = outbreak_decrease_mult_low
	}
	else_if = {
		limit = {
			culture = {
				has_cultural_era_or_later = culture_era_high_medieval
			}
		}
		add = 0
	}
	else_if = {
		limit = {
			culture = {
				has_cultural_era_or_later = culture_era_early_medieval
			}
		}
		add = 0
	}
	else_if = {
		limit = {
			culture = {
				has_cultural_era_or_later = culture_era_tribal
			}
		}
		add = outbreak_decrease_mult_low
	}

	#Terrain
	if = {
		limit = {
			OR = {
				terrain = hills
				terrain = forest
				terrain = desert
				terrain = desert_mountains
				terrain = mountains
			}
		}
		add = outbreak_decrease_mult_low
	}
	else_if = {
		limit = {
			OR = {
				terrain = jungle
				terrain = taiga
			}
		}
		add = outbreak_increase_mult_low
	}

	#Developed places
	if = {
		limit = {
			has_holding = yes
		}
		add = outbreak_increase_mult_low
	}
	if = {
		limit = {
			has_holding_type = city_holding
		}
		add = outbreak_increase_mult_low
	}
	
	multiply = 0.8
	min = 0.001
}

outbreak_chance_major_default_value = {
	value = outbreak_chance_base_very_low 

	#Buildings
	if = {
		limit = {
			num_buildings >= 6
		}
		add = {
			value = num_buildings
			multiply = outbreak_increase_add_low
		}
	}

	#Tradeports
	if = {
		limit = {
			has_building_or_higher = common_tradeport_01
		}
		add = outbreak_increase_add_low
	}
	if = {
		limit = {
			has_building_or_higher = common_tradeport_02
		}
		add = outbreak_increase_add_medium
	}
	if = {
		limit = {
			has_building_or_higher = common_tradeport_03
		}
		add = outbreak_increase_add_low
	}
	if = {
		limit = {
			has_building_or_higher = common_tradeport_04
		}
		add = outbreak_increase_add_medium
	}
	if = {
		limit = {
			has_building_or_higher = common_tradeport_05
		}
		add = outbreak_increase_add_medium
	}
	if = {
		limit = {
			has_building_or_higher = common_tradeport_06
		}
		add = outbreak_increase_add_medium
	}
	if = {
		limit = {
			has_building_or_higher = common_tradeport_07
		}
		add = outbreak_increase_add_medium
	}
	if = {
		limit = {
			has_building_or_higher = common_tradeport_08
		}
		add = outbreak_increase_add_medium
	}

	#Markets
	if = {
		limit = {
			has_building_or_higher = market_villages_01
		}
		add = outbreak_increase_add_low
	}
	if = {
		limit = {
			has_building_or_higher = market_villages_02
		}
		add = outbreak_increase_add_low
	}

	#Guild Halls
	if = {
		limit = {
			has_building_or_higher = guild_halls_01
		}
		add = outbreak_increase_add_medium
	}
	if = {
		limit = {
			has_building_or_higher = guild_halls_02
		}
		add = outbreak_increase_add_medium
	}
	if = {
		limit = {
			has_building_or_higher = guild_halls_03
		}
		add = outbreak_increase_add_medium
	}
	if = {
		limit = {
			has_building_or_higher = guild_halls_04
		}
		add = outbreak_increase_add_medium
	}

	if = {
		limit = {
			OR = {
				has_global_variable = is_in_tutorial
				AND = {
					has_global_variable = start_epidemic_grace
					OR = {
						county.holder = { is_ai = no }
						county.holder = {
							any_liege_or_above = { is_ai = no }
						}
					}
				}
			}
		}
		multiply = 0
	}
}

outbreak_chance_major_mult_value = {
	value = 0.8

	# Game rules
	if = {
		limit = {
			has_game_rule = epidemic_frequency_often
		}
		add = outbreak_increase_mult_low
	}
	else_if = {
		limit = {
			has_game_rule = epidemic_frequency_very_often
		}
		add = outbreak_increase_mult_medium
	}
	else_if = {
		limit = {
			has_game_rule = epidemic_frequency_doomsday
		}
		add = outbreak_increase_mult_high
	}
	else_if = {
		limit = {
			OR = {
				has_game_rule = epidemic_frequency_rare
				has_game_rule = easy_difficulty
			}
		}
		add = outbreak_decrease_mult_medium
	}
	else_if = {
		limit = {
			OR = {
				has_game_rule = epidemic_frequency_very_rare
				has_game_rule = very_easy_difficulty
			}
		}
		add = outbreak_decrease_mult_high
	}

	#Development
	add = {
		value = county.development_level
		multiply = 0.008
	}

	#Era pacing
	if = {
		limit = {
			culture = {
				has_cultural_era_or_later = culture_era_late_medieval
			}
		}
		add = 0
	}
	else_if = {
		limit = {
			culture = {
				has_cultural_era_or_later = culture_era_high_medieval
			}
		}
		add = 0
	}
	else_if = {
		limit = {
			culture = {
				has_cultural_era_or_later = culture_era_early_medieval
			}
		}
		add = outbreak_decrease_mult_low
	}
	else_if = {
		limit = {
			culture = {
				has_cultural_era_or_later = culture_era_tribal
			}
		}
		add = outbreak_decrease_mult_medium
	}

	#Terrain
	if = {
		limit = {
			OR = {
				terrain = hills
				terrain = forest
				terrain = desert
				terrain = desert_mountains
				terrain = mountains
			}
		}
		add = outbreak_decrease_mult_low
	}
	else_if = {
		limit = {
			OR = {
				terrain = jungle
				terrain = taiga
			}
		}
		add = outbreak_increase_mult_low
	}

	#Developed places
	if = {
		limit = {
			has_holding = yes
		}
		add = outbreak_increase_mult_low
	}
	if = {
		limit = {
			has_holding_type = city_holding
		}
		add = outbreak_increase_mult_low
	}
	
	multiply = 1.05
	
	min = 0.001
}

outbreak_chance_apocalyptic_default_value = {
	value = outbreak_chance_base_extra_low
	
	#Buildings
	if = {
		limit = {
			num_buildings >= 10
		}
		add = {
			value = num_buildings
			multiply = outbreak_increase_add_low
		}
	}

	#Tradeports
	if = {
		limit = {
			has_building_or_higher = common_tradeport_01
		}
		add = outbreak_increase_add_low
	}
	if = {
		limit = {
			has_building_or_higher = common_tradeport_02
		}
		add = outbreak_increase_add_low
	}
	if = {
		limit = {
			has_building_or_higher = common_tradeport_03
		}
		add = outbreak_increase_add_low
	}
	if = {
		limit = {
			has_building_or_higher = common_tradeport_04
		}
		add = outbreak_increase_add_low
	}
	if = {
		limit = {
			has_building_or_higher = common_tradeport_05
		}
		add = outbreak_increase_add_low
	}
	if = {
		limit = {
			has_building_or_higher = common_tradeport_06
		}
		add = outbreak_increase_add_medium
	}
	if = {
		limit = {
			has_building_or_higher = common_tradeport_07
		}
		add = outbreak_increase_add_medium
	}
	if = {
		limit = {
			has_building_or_higher = common_tradeport_08
		}
		add = outbreak_increase_add_medium
	}

	#Markets
	if = {
		limit = {
			has_building_or_higher = market_villages_01
		}
		add = outbreak_increase_add_low
	}
	if = {
		limit = {
			has_building_or_higher = market_villages_02
		}
		add = outbreak_increase_add_low
	}

	#Guild Halls
	if = {
		limit = {
			has_building_or_higher = guild_halls_01
		}
		add = outbreak_increase_add_low
	}
	if = {
		limit = {
			has_building_or_higher = guild_halls_02
		}
		add = outbreak_increase_add_low
	}
	if = {
		limit = {
			has_building_or_higher = guild_halls_03
		}
		add = outbreak_increase_add_low
	}
	if = {
		limit = {
			has_building_or_higher = guild_halls_04
		}
		add = outbreak_increase_add_low
	}

	if = {
		limit = {
			OR = {
				has_global_variable = is_in_tutorial
				AND = {
					has_global_variable = start_epidemic_grace
					OR = {
						county.holder = { is_ai = no }
						county.holder = {
							any_liege_or_above = { is_ai = no }
						}
					}
				}
			}
		}
		multiply = 0
	}
}

outbreak_chance_apocalyptic_mult_value = {
	value = 0.5

	# Game rules
	if = {
		limit = {
			has_game_rule = epidemic_frequency_often
		}
		add = outbreak_increase_mult_low
	}
	else_if = {
		limit = {
			has_game_rule = epidemic_frequency_very_often
		}
		add = outbreak_increase_mult_medium
	}
	else_if = {
		limit = {
			has_game_rule = epidemic_frequency_doomsday
		}
		add = outbreak_increase_mult_high
	}
	else_if = {
		limit = {
			has_game_rule = epidemic_frequency_rare
		}
		add = outbreak_decrease_mult_medium
	}
	else_if = {
		limit = {
			has_game_rule = epidemic_frequency_very_rare
		}
		add = outbreak_decrease_mult_high
	}

	#Development
	add = {
		value = county.development_level
		multiply = 0.008
	}

	#Era pacing
	if = {
		limit = {
			culture = {
				has_cultural_era_or_later = culture_era_late_medieval
			}
		}
		add = 0
	}
	else_if = {
		limit = {
			culture = {
				has_cultural_era_or_later = culture_era_high_medieval
			}
		}
		add = outbreak_decrease_mult_medium
	}
	else_if = {
		limit = {
			culture = {
				has_cultural_era_or_later = culture_era_early_medieval
			}
		}
		add = outbreak_decrease_mult_unlikely
	}
	else_if = {
		limit = {
			culture = {
				has_cultural_era_or_later = culture_era_tribal
			}
		}
		add = outbreak_decrease_mult_unlikely
	}

	#Terrain
	if = {
		limit = {
			OR = {
				terrain = hills
				terrain = forest
				terrain = desert
				terrain = desert_mountains
				terrain = mountains
			}
		}
		add = outbreak_decrease_mult_low
	}
	else_if = {
		limit = {
			OR = {
				terrain = jungle
				terrain = taiga
			}
		}
		add = outbreak_increase_mult_low
	}

	#Developed places
	if = {
		limit = {
			has_holding = yes
		}
		add = outbreak_increase_mult_low
	}
	if = {
		limit = {
			has_holding_type = city_holding
		}
		add = outbreak_increase_mult_low
	}
	
	multiply = 1.05
	
	min = 0.0005
}


outbreak_chance_dysentery_default_value = {

	value = outbreak_chance_base_low #Shouldn't happen unless there's an army present	
	if = {
		limit = {
			any_army_in_location ?= {
				OR = {
					is_army_in_combat = yes
					is_army_in_raid = yes
				}
			}
		}
		add = outbreak_increase_add_extra_high
	}
	if = {
		limit = {
			any_army_in_location ?= {
				count >= 1
			}
		}
		add = outbreak_increase_add_very_high

	}
	if = {
		limit = {
			any_army_in_location ?= {
				is_army_in_siege = yes
			}
		}
		add = outbreak_increase_add_extra_high
		if = {
			limit = {
				fort_level >= 12
			}
			add = outbreak_increase_add_very_high
		}
		if = {
			limit = {
				fort_level >= 10
			}
			add = outbreak_increase_add_high
		}
		if = {
			limit = {
				fort_level >= 8
			}
			add = outbreak_increase_add_high
		}
		if = {
			limit = {
				fort_level >= 4
			}
			add = outbreak_increase_add_medium
		}
		if = {
			limit = {
				fort_level > 2
			}
			add = outbreak_increase_add_low
		}
	}

	if = {
		limit = {
			OR = {
				has_global_variable = is_in_tutorial
				AND = {
					has_global_variable = start_epidemic_grace
					OR = {
						county.holder = { is_ai = no }
						county.holder = {
							any_liege_or_above = { is_ai = no }
						}
					}
				}
			}
		}
		multiply = 0
	}
}

outbreak_chance_dysentery_mult_value = {
	value = 1
	min = 0.001
	# Game rules
	if = {
		limit = {
			has_game_rule = epidemic_frequency_often
		}
		add = outbreak_increase_mult_low
	}
	else_if = {
		limit = {
			has_game_rule = epidemic_frequency_very_often
		}
		add = outbreak_increase_mult_medium
	}
	else_if = {
		limit = {
			has_game_rule = epidemic_frequency_doomsday
		}
		add = outbreak_increase_mult_high
	}
	else_if = {
		limit = {
			has_game_rule = epidemic_frequency_rare
		}
		add = outbreak_decrease_mult_medium
	}
	else_if = {
		limit = {
			has_game_rule = epidemic_frequency_very_rare
		}
		add = outbreak_decrease_mult_high
	}

	#Era pacing
	if = {
		limit = {
			culture = {
				has_cultural_era_or_later = culture_era_late_medieval
			}
		}
		add = 0
	}
	else_if = {
		limit = {
			culture = {
				has_cultural_era_or_later = culture_era_high_medieval
			}
		}
		add = 0
	}
	else_if = {
		limit = {
			culture = {
				has_cultural_era_or_later = culture_era_early_medieval
			}
		}
		add = outbreak_decrease_mult_low
	}
	else_if = {
		limit = {
			culture = {
				has_cultural_era_or_later = culture_era_tribal
			}
		}
		add = outbreak_decrease_mult_medium
	}

	#Terrain
	if = {
		limit = {
			OR = {
				terrain = hills
				terrain = forest
				terrain = desert
				terrain = desert_mountains
				terrain = mountains
			}
		}
		add = outbreak_decrease_mult_low
	}
	else_if = {
		limit = {
			OR = {
				terrain = jungle
				terrain = taiga
			}
		}
		add = outbreak_increase_mult_low
	}

	#Developed places
	if = {
		limit = {
			has_holding = yes
		}
		add = outbreak_increase_mult_low
	}
	if = {
		limit = {
			has_holding_type = city_holding
		}
		add = outbreak_increase_mult_low
	}
}

outbreak_chance_black_plague_default_value = {
	value = outbreak_chance_base_extra_low

	#Buildings
	if = {
		limit = {
			num_buildings >= 20
		}
		add = {
			value = num_buildings
			multiply = outbreak_increase_add_medium
		}
	}

	if = {
		limit = {
			has_building_or_higher = common_tradeport_03
		}
		add = outbreak_increase_add_medium
	}
	if = {
		limit = {
			has_building_or_higher = common_tradeport_04
		}
		add = outbreak_increase_add_medium
	}
	if = {
		limit = {
			has_building_or_higher = common_tradeport_05
		}
		add = outbreak_increase_add_high
	}
	if = {
		limit = {
			has_building_or_higher = common_tradeport_06
		}
		add = outbreak_increase_add_high
	}
	if = {
		limit = {
			has_building_or_higher = common_tradeport_07
		}
		add = outbreak_increase_add_high
	}
	if = {
		limit = {
			has_building_or_higher = common_tradeport_08
		}
		add = outbreak_increase_add_high
	}
	
	if = {
		limit = {
			has_game_rule = epidemic_frequency_disabled
		}
		multiply = 0
	}

	if = {
		limit = {
			has_game_rule = bd_occurrence_random
		}
		add = outbreak_increase_add_high
	}

	if = {
		limit = {
			OR = {
				has_global_variable = is_in_tutorial
				AND = {
					has_global_variable = start_epidemic_grace
					OR = {
						county.holder = { is_ai = no }
						county.holder = {
							any_liege_or_above = { is_ai = no }
						}
					}
				}
			}
		}
		multiply = 0
	}
}

outbreak_chance_black_plague_mult_value = {
	value = 1
	min = 0.001
	#Development
	add = {
		value = county.development_level
		multiply = 0.08
	}

	# Game rules
	if = {
		limit = {
			has_game_rule = epidemic_frequency_often
		}
		add = outbreak_increase_mult_low
	}
	else_if = {
		limit = {
			has_game_rule = epidemic_frequency_very_often
		}
		add = outbreak_increase_mult_medium
	}
	else_if = {
		limit = {
			has_game_rule = epidemic_frequency_doomsday
		}
		add = outbreak_increase_mult_high
	}
	else_if = {
		limit = {
			has_game_rule = epidemic_frequency_rare
		}
		add = outbreak_decrease_mult_medium
	}
	else_if = {
		limit = {
			has_game_rule = epidemic_frequency_very_rare
		}
		add = outbreak_decrease_mult_high
	}

	#Era pacing
	if = {
		limit = {
			NOR = {
				has_game_rule = bd_occurrence_random
				has_game_rule = bd_frequency_unlimited
			}
		}
		if = {
			limit = {
				culture = {
					has_cultural_era_or_later = culture_era_late_medieval
				}
			}
			add = outbreak_decrease_mult_low
		}
		else_if = {
			limit = {
				culture = {
					has_cultural_era_or_later = culture_era_high_medieval
				}
			}
			add = outbreak_decrease_mult_medium
		}
		else_if = {
			limit = {
				culture = {
					has_cultural_era_or_later = culture_era_early_medieval
				}
			}
			add = outbreak_decrease_mult_high
		}
		else_if = {
			limit = {
				culture = {
					has_cultural_era_or_later = culture_era_tribal
				}
			}
			add = outbreak_decrease_mult_unlikely
		}
	}

	#Terrain
	if = {
		limit = {
			OR = {
				terrain = hills
				terrain = forest
				terrain = desert
				terrain = desert_mountains
				terrain = mountains
			}
		}
		add = outbreak_decrease_mult_low
	}
	else_if = {
		limit = {
			OR = {
				terrain = jungle
				terrain = taiga
			}
		}
		add = outbreak_increase_mult_low
	}

	#Developed places
	if = {
		limit = {
			has_holding = yes
		}
		add = outbreak_increase_mult_low
	}
	if = {
		limit = {
			has_holding_type = city_holding
		}
		add = outbreak_increase_mult_low
	}
}

#### SPREAD CHANCE ###
#Controls the spread of the epidemic
#root = potential_province

spread_chance_epidemics_default_value = {
	if = {
		limit = {
			scope:epidemic = {
				outbreak_intensity = apocalyptic
			}
		}
		add = spread_chance_base_high
	}
	else_if = {
		limit = {
			scope:epidemic = {
				outbreak_intensity = major
			}
		}
		add = spread_chance_base_medium
	}
	else = { #minor
		add = spread_chance_base_low
	}
	
	#less patchy, add
	if = {
		limit = {
			county = {
				any_county_province = {
					any_province_epidemic = {
						this.epidemic_type = scope:epidemic.epidemic_type
					}
				}
			}
		}
		add = spread_increase_add_high
	}

	#Dysentery spreads to armies and forts
	if = {
		limit = { scope:epidemic.epidemic_type = epidemic_type:dysentery }
		add = {
			if = {
				limit = {
					any_army_in_location ?= {
						is_army_in_siege = yes
					}
				}
				add = spread_increase_add_high
			}
			if = {
				limit = {
					any_army_in_location ?= {
						OR = {
							is_army_in_combat = yes
							is_army_in_raid = yes
						}
					}
				}
				add = spread_increase_add_medium
			}
			if = {
				limit = {
					any_army_in_location ?= {
						count >= 1
					}
				}
				add = spread_increase_add_high
			}			
		}
		add = {
			value = fort_level
			multiply = spread_increase_mult_low
		}
	}
	
	#Buildings
	add = {
		value = num_buildings
		multiply = spread_increase_mult_low
	}

	#Tradeports
	if = {
		limit = {
			has_building_or_higher = common_tradeport_01
		}
		add = spread_increase_add_low
	}
	if = {
		limit = {
			has_building_or_higher = common_tradeport_02
		}
		add = spread_increase_add_low
	}
	if = {
		limit = {
			has_building_or_higher = common_tradeport_03
		}
		add = spread_increase_add_low
	}
	if = {
		limit = {
			has_building_or_higher = common_tradeport_04
		}
		add = spread_increase_add_medium
	}
	if = {
		limit = {
			has_building_or_higher = common_tradeport_05
		}
		add = spread_increase_add_medium
	}
	if = {
		limit = {
			has_building_or_higher = common_tradeport_06
		}
		add = spread_increase_add_medium
	}
	if = {
		limit = {
			has_building_or_higher = common_tradeport_07
		}
		add = spread_increase_add_high
	}
	if = {
		limit = {
			has_building_or_higher = common_tradeport_08
		}
		add = spread_increase_add_high
	}

	#Markets
	if = {
		limit = {
			has_building_or_higher = market_villages_01
		}
		add = spread_increase_add_low
	}
	if = {
		limit = {
			has_building_or_higher = market_villages_02
		}
		add = spread_increase_add_low
	}

	#Guild Halls
	if = {
		limit = {
			has_building_or_higher = guild_halls_02
		}
		add = spread_increase_add_high
	}
	if = {
		limit = {
			has_building_or_higher = guild_halls_04
		}
		add = spread_increase_add_high
	}
	if = {
		limit = {
			has_building_or_higher = guild_halls_06
		}
		add = spread_increase_add_high
	}
	if = {
		limit = {
			has_building_or_higher = guild_halls_08
		}
		add = spread_increase_add_high
	}


	#Terrain
	if = {
		limit = {
			terrain = farmlands
		}
		add = spread_increase_add_medium
	}
	else_if = {
		limit = {
			OR = {
				terrain = floodplains
				terrain = wetlands
			}
		}
		add = spread_increase_add_low
	}
	else_if = {
		limit = {
			OR = {
				terrain = plains
				terrain = steppe
			}
		}
		add = spread_increase_add_low
	}
	else_if = {
		limit = {
			OR = {
				terrain = hills
				terrain = drylands
				terrain = oasis
				terrain = forest
			}
		}
		add = spread_decrease_add_low
	}
	else_if = {
		limit = {
			OR = {
				terrain = jungle
				terrain = taiga
			}
		}
		add = spread_decrease_add_medium
	}
	else_if = {
		limit = {
			OR = {
				terrain = desert
				terrain = desert_mountains
				terrain = mountains
			}
		}
		add = spread_decrease_add_medium
	}
	#Island?
	if = {
		limit = {
			geographical_region = divergence_island_regions
		}
		add = spread_decrease_add_medium
	}
	#Cultural Traditions
	if = {
		limit = {
			county.culture = {
				OR = {
					has_cultural_tradition = tradition_city_keepers
					has_cultural_tradition = tradition_maritime_mercantilism
				}
			}
		}
		add = spread_increase_add_medium
	}
	else_if = {
		limit = {
			county.culture = {
				OR = {
					has_cultural_tradition = tradition_esteemed_hospitality
					has_cultural_tradition = tradition_horse_lords
					has_cultural_tradition = tradition_caravaneers
					has_cultural_tradition = tradition_seafaring
				}
			}
		}
		add = spread_increase_add_low
	}
	else_if = {
		limit = {
			county.culture = {
				OR = {
					has_cultural_tradition = tradition_practiced_pirates
					has_cultural_tradition = tradition_parochialism
				}
			}
		}
		add = spread_increase_add_low
	}
	if = {
		limit = {
			county.culture = {
				has_cultural_tradition = tradition_hidden_cities
			}
		}
		add = spread_decrease_add_high
	}
	else_if = {
		limit = {
			county.culture = {
				has_cultural_parameter = less_plague_spread_culture
			}
		}
		add = spread_decrease_add_high
	}
	
	#Reinfection shouldn't happen often
	if = {
		limit = {
			scope:epidemic = {
				is_target_in_variable_list = {
					name = epidemic_cooldown
				}
			}
		}
		add = spread_decrease_add_very_high
	}
}

spread_chance_epidemics_mult_value = {
	value = 1
	min = 0.001
	#Coastal Statistics Squash
	if = {
		limit = {
			OR = {
				is_coastal = yes
				is_riverside_province = yes
			}
			NOR = {
				has_building_or_higher = common_tradeport_04
				num_buildings > 4
			}
		}
		add = spread_decrease_mult_medium
	}

	#Making sure that England gets properly rekted by the Black Plague
	if = {
		limit = {
			has_global_variable = black_death
			scope:epidemic = global_var:black_death
			OR = {
				is_coastal = yes
				is_riverside_province = yes
			}
			has_building_or_higher = common_tradeport_06
			num_buildings > 10
		}
		add = spread_increase_mult_very_high
	}

	#less patchy, mult
	if = {
		limit = {
			county = {
				any_county_province = {
					any_province_epidemic = {
						this.epidemic_type = scope:epidemic.epidemic_type
					}
				}
			}
		}
		add = spread_increase_mult_very_high
	}

	#Development
	add = {
		value = county.development_level
		multiply = 0.025
	}


	# Game rules
	if = {
		limit = {
			has_game_rule = epidemic_frequency_doomsday
		}
		add = spread_increase_mult_very_high
	}
	else_if = {
		limit = {
			has_game_rule = epidemic_frequency_very_often
		}
		add = spread_increase_mult_medium
	}
	else_if = {
		limit = {
			has_game_rule = epidemic_frequency_often
		}
		add = spread_increase_mult_low
	}
	else_if = {
		limit = {
			has_game_rule = epidemic_frequency_very_rare
		}
		add = spread_decrease_mult_medium
	}
	else_if = {
		limit = {
			has_game_rule = epidemic_frequency_rare
		}
		add = spread_decrease_mult_low
	}

	#Intensity mult

	if = {
		limit = { 
			scope:epidemic = {
				outbreak_intensity = apocalyptic
			}
		}
		add = spread_increase_mult_high
	}
	else_if = {
		limit = { 
			scope:epidemic = {
				outbreak_intensity = major
			}
		}
		add = spread_increase_mult_medium
	}

	#Recent Epidemics
	if = {
		limit = {
			is_target_in_variable_list = {
				name = epidemic_cooldown #Average lifespan
				target = scope:epidemic.epidemic_type
			}
		}
		if = {
			limit = {
				has_game_rule = epidemic_frequency_often
			}
			add = spread_decrease_mult_high
		}
		else_if = {
			limit = {
				has_game_rule = epidemic_frequency_very_often
			}
			add = spread_decrease_mult_medium
		}
		else_if = {
			limit = {
				has_game_rule = epidemic_frequency_doomsday
			}
			add = spread_decrease_mult_low
		}
		else = {
			add = spread_decrease_mult_unlikely
		}	
	}

	#People still remember how to social distance in general
	if = {
		limit = {
			has_variable = epidemic_cooldown_general #Average social memory
		}
		if = {
			limit = {
				has_game_rule = epidemic_frequency_very_often
			}
			add = spread_decrease_mult_medium
		}
		else_if = {
			limit = {
				has_game_rule = epidemic_frequency_doomsday
			}
			add = spread_decrease_mult_low
		}
		else = {
			add = spread_decrease_mult_high
		}
	}

	#Developed places
	if = {
		limit = {
			has_holding = yes
		}
		add = spread_increase_mult_low
	}
	if = {
		limit = {
			OR = {
				has_holding_type = castle_holding
				has_holding_type = church_holding
			}
		}
		add = spread_increase_mult_low
	}
	if = {
		limit = {
			has_holding_type = city_holding
		}
		add = spread_increase_mult_medium
	}
}

#### DAILY INFECTION RATE ###
#The velocity at which the infection rate goes up in a province

infection_rate_change_value = {
	
}

#### CHARACTER INFECTION CHANCE ###
#Monthly chance for an epidemic to infect a character in the province

would_follow_social_distancing_value = {
	value = -1 #let's assume medieval people wouldn't by default
	if = {
		limit = { has_perk = wash_your_hands_perk }
		add = 10
	}
	if = {
		limit = { has_trait = shy }
		add = 1
	}
	if = {
		limit = { has_trait = paranoid }
		add = 2
	}
	if = {
		limit = { has_trait = reclusive }
		add = 4
	}
	if = {
		limit = { has_trait = shrewd }
		add = 1
	}
	if = {
		limit = { has_trait = lifestyle_physician }
		add = 4
	}
	if = {
		limit = { has_trait = lifestyle_herbalist }
		add = 2
	}
	if = {
		limit = { has_trait = diligent }
		add = 1
	}
	if = {
		limit = { has_trait = craven }
		add = 1
	}
	if = {
		limit = { has_trait = temperate }
		add = 1
	}
	if = {
		limit = { has_trait = arbitrary }
		add = -1
	}
	if = {
		limit = { has_trait = brave }
		add = -1
	}
	if = {
		limit = { has_trait = impatient }
		add = -2
	}
	if = {
		limit = { has_trait = gregarious }
		add = -4
	}
	if = {
		limit = { has_trait = dull }
		add = -2
	}
	#Would your culture be touchy?/take this seriously
	if = {
		limit = { culture = { has_cultural_tradition = tradition_fp2_ritualised_friendship } }
		add = -1
	}
	if = {
		limit = { culture = { has_cultural_tradition = tradition_life_is_just_a_joke } }
		add = -1
	}
	if = {
		limit = { culture = { has_cultural_parameter = better_disease_resistance } }
		add = 20
	}
}

character_infection_chance_default_value = {
	value = 10
	#If you're already sick/weak you're screwed
	if = { 
		limit = { 
			OR = {
				has_trait = sickly
				has_trait = inbred
				health <= poor_health
			}
		}
		add = 20
	}
	#Epidemic Intensity
	if = {
		limit = {
			scope:epidemic ?= {
				outbreak_intensity = apocalyptic
				epidemic_type.epidemic_trait = trait:bubonic_plague
			}
		}
		add = 40
	}
	else_if = {
		limit = {
			scope:epidemic ?= {
				outbreak_intensity = apocalyptic
				NOT = { epidemic_type.epidemic_trait = trait:bubonic_plague }
			}
		}
		add = 30
	}
	else_if = {
		limit = {
			scope:epidemic ?= {
				outbreak_intensity = major
			}
		}
		add = 20
	}
	else = { #minor
		add = 10
	}
	#Let's see if you have any advantageous traits/perks / Wash your hands is included in the social distancing calculation, these are purely health related
	if = {
		limit = {
			has_trait = athletic
		}
		add = -4
	}
	if = {
		limit = {
			has_perk = iron_constitution_perk
		}
		add = -6
	}
	if = {
		limit = {
			has_perk = healthy_perk
		}
		add = -8
	}
	if = {
		limit = {
			has_trait = whole_of_body
		}
		add = -10
	}
	#Things to bump the numbers
	if = {
		limit = {
			is_foreign_court_or_pool_guest = yes
		}
		add = 40
	}
	if = {
		limit = {
			is_ruler = no
		}
		add = 10
	}
	#Children getting hit with measles
	if = {
		limit = {
			scope:epidemic.epidemic_type.epidemic_trait = trait:measles
			is_adult = no
		}
		add = 20
	}
	#"Old" people get hit more in general
	if = {
		limit = {
			age >= 65
		}
		add = 40
	}
	else_if = {
		limit = {
			age >= 50
		}
		add = 20
	}
	# Camp resistance.
	if = {
		limit = {
			host.domicile ?= { has_domicile_parameter = camp_infection_chance_buff_1 }
		}
		# Max buff.
		if = {
			limit = {
				host.domicile ?= { has_domicile_parameter = camp_infection_chance_buff_6 }
			}
			add = -40
		}
		# Very high buff.
		else_if = {
			limit = {
				host.domicile ?= { has_domicile_parameter = camp_infection_chance_buff_5 }
			}
			add = -30
		}
		# High buff.
		else_if = {
			limit = {
				host.domicile ?= { has_domicile_parameter = camp_infection_chance_buff_4 }
			}
			add = -25
		}
		# Medium buff.
		else_if = {
			limit = {
				host.domicile ?= { has_domicile_parameter = camp_infection_chance_buff_3 }
			}
			add = -20
		}
		# Small buff.
		else_if = {
			limit = {
				host.domicile ?= { has_domicile_parameter = camp_infection_chance_buff_2 }
			}
			add = -15
		}
		# Slight buff.
		else_if = {
			limit = {
				host.domicile ?= { has_domicile_parameter = camp_infection_chance_buff_1 }
			}
			add = -10
		}
	}
	#Would you follow social distancing?
	#your numerical social distance value gets transformed here into a bonus/malus
	add = {
		value = would_follow_social_distancing_value
		multiply = -1 #inverted value
	}
	#How infected is your location?
	#Follows the infection rate thresholds set for the barony/county modifiers
	if = {
		limit = {
			location = { epidemic_resistance > 80 }
		}
		multiply = 0.25
	}
	else_if = {
		limit = {
			location = { epidemic_resistance > 50 }
		}
		multiply = 0.5
	}
	else_if = {
		limit = {
			location = { epidemic_resistance > 10 }
		}
		multiply = 0.75
	}
	#Are you taking proper measures?
	if = {
		limit = {
			has_character_modifier = isolating_modifier
		}
		multiply = 0.25 #75% less likely
	}
	#How infected is your location?
	#Follows the infection rate thresholds set for the barony/county modifiers
	if = {
		limit = {
			scope:province = { epidemic_resistance > 80 }
		}
		multiply = 0.25
	}
	else_if = {
		limit = {
			scope:province = { epidemic_resistance > 50 }
		}
		multiply = 0.5
	}
	else_if = {
		limit = {
			scope:province = { epidemic_resistance > 10 }
		}
		multiply = 0.75
	}
	min = 1 # Never totally immune
}

#How contagious is this character?
character_contagious_value = {
	add = { #would they follow social distancing?
		value = would_follow_social_distancing_value
		multiply = -1 #inverted
	}
	if = {
		limit = {
			has_trait = wheezing
		}
		add = 4
	}
}

recent_epidemics_outbreak_mult_value = {
	value = 1
	min = 0.001
	#Recently recovered from this epidemic
	if = {
		limit = {
			is_target_in_variable_list = {
				name = epidemic_cooldown #Average lifespan
				target = scope:epidemic_type
			}
		}
		if = {
			limit = {
				has_game_rule = epidemic_frequency_very_often
			}
			value = outbreak_decrease_mult_high
		}
		else_if = {
			limit = {
				has_game_rule = epidemic_frequency_doomsday
			}
			value = outbreak_decrease_mult_medium
		}
		else = {
			value = outbreak_decrease_mult_unlikely
		}
		
	}

	#People still remember how to social distance in general
	else_if = {
		limit = {
			has_variable = epidemic_cooldown_general #Average social memory
		}
		if = {
			limit = {
				has_game_rule = epidemic_frequency_very_often
			}
			value = outbreak_decrease_mult_medium
		}
		else_if = {
			limit = {
				has_game_rule = epidemic_frequency_doomsday
			}
			value = outbreak_decrease_mult_low
		}
		else = {
			value = outbreak_decrease_mult_high
		}
	}
}

#How badly effected is a county's development?
epidemic_development_loss_value = {
	subtract = scope:base_loss

	#This feeds into the change_development_progress in 00_epidemics
	#Bear in mind that minimal_development_progress_loss is 10
	#and massive_development_progress_loss is 100
	#Aim for something between those two extremes generally (in minus)

	#Since we have widespread development loss handled by modifier, we
	#now use this figure to 'chunk' down places with very high development
	#so they are disproportionately affected

	scope:epidemic = {
		switch = {
			trigger = outbreak_intensity
			minor = { subtract = 2.5 }
			major = { subtract = 5 }
			apocalyptic = { subtract = 7.5 }
		}
	}

	# Development
	subtract = {
		value = development_level
		multiply = 0.3
	}

	multiply = {
		value = 6
		divide = num_county_holdings
	}

	multiply = {
		value = 100
		subtract = title_province.epidemic_resistance
		multiply = 0.005
		add = 1
	}
}

epidemic_fromdust_value = {
	value = minor_gold_value
	multiply = former_infected_county_count
}

former_infected_county_count = {
	value = 1
	every_in_list = {
		variable = formerly_infected_counties
		add = 0.1
	}
}
