﻿# Commander+ 1.20 compatibility rebase on exact CK3 1.20.0 vanilla.
assign_commander_trait_effect = {
	random_list = {
		100 = {
			trigger = { NOT = { has_trait = logistician } }
			add_trait = logistician
		}
		100 = {
			trigger = { NOT = { has_trait = military_engineer } }
			add_trait = military_engineer
		}
		100 = {
			trigger = { NOT = { has_trait = aggressive_attacker } }
			add_trait = aggressive_attacker
		}
		100 = {
			trigger = { NOT = { has_trait = unyielding_defender } }
			add_trait = unyielding_defender
		}
		100 = {
			trigger = { NOT = { has_trait = forder } }
			add_trait = forder
		}
		100 = {
			trigger = { NOT = { has_trait = flexible_leader } }
			add_trait = flexible_leader
		}
		100 = {
			trigger = {
				NOT = { has_trait = desert_warrior }
				OR = {
					any_directly_owned_province = {
						terrain = desert
					}
					AND = {
						exists = scope:educator
						scope:educator = {
							any_directly_owned_province = {
								terrain = desert
							}
						}
					}
					AND = {
						NOT = { exists = scope:educator }
						liege ?= {
							any_directly_owned_province = {
								terrain = desert
							}
						}
					}
				}
			}
			modifier = {
				culture = {
					has_cultural_parameter = desert_warrior_trait_more_common
				}
				factor = 2
			}
			add_trait = desert_warrior
		}
		100 = {
			trigger = {
				NOT = { has_trait = jungle_stalker }
				OR = {
					any_directly_owned_province = {
						terrain = jungle
					}
					AND = {
						exists = scope:educator
						scope:educator = {
							any_directly_owned_province = {
								terrain = jungle
							}
						}
					}
					AND = {
						NOT = { exists = scope:educator }
						liege ?= {
							any_directly_owned_province = {
								terrain = jungle
							}
						}
					}
				}
			}
			modifier = {
				culture = {
					has_cultural_parameter = jungle_stalker_trait_more_common
				}
				factor = 2
			}
			add_trait = jungle_stalker
		}
		100 = {
			trigger = {
				NOT = { has_trait = winter_soldier }
				OR = {
					any_directly_owned_province = {
						OR = {
							terrain = taiga
							geographical_region = world_tibet
							geographical_region = world_europe_north
							geographical_region = world_europe_east
							geographical_region = world_steppe
						}
					}
					AND = {
						exists = scope:educator
						scope:educator = {
							any_directly_owned_province = {
								OR = {
									terrain = taiga
									geographical_region = world_tibet
									geographical_region = world_europe_north
									geographical_region = world_europe_east
									geographical_region = world_steppe
								}
							}
						}
					}
					AND = {
						NOT = { exists = scope:educator }
						liege ?= {
							any_directly_owned_province = {
								OR = {
									terrain = taiga
									geographical_region = world_tibet
									geographical_region = world_europe_north
									geographical_region = world_europe_east
									geographical_region = world_steppe
								}
							}
						}
					}
				}
			}
			modifier = {
				culture = {
					has_cultural_parameter = winter_soldier_trait_more_common
				}
				factor = 2
			}
			add_trait = winter_soldier
		}
		100 = {
			trigger = { NOT = { has_trait = reaver } }
			add_trait = reaver
		}
		100 = {
			trigger = { NOT = { has_trait = reckless } }
			add_trait = reckless
		}
		100 = {
			trigger = { NOT = { has_trait = holy_warrior } }
			add_trait = holy_warrior
		}
		100 = {
			trigger = {
				culture = {
					has_cultural_parameter = forest_fighter_trait_more_common
				}
				NOT = { has_trait = forest_fighter }
				OR = {
					any_directly_owned_province = {
						OR = {
							terrain = forest
							terrain = taiga
						}
					}
					AND = {
						exists = scope:educator
						scope:educator = {
							any_directly_owned_province = {
								OR = {
									terrain = forest
									terrain = taiga
								}
							}
						}
					}
					AND = {
						NOT = { exists = scope:educator }
						liege ?= {
							any_directly_owned_province = {
								OR = {
									terrain = forest
									terrain = taiga
								}
							}
						}
					}
				}
			}
			modifier = {
				culture = {
					has_cultural_parameter = forest_fighter_trait_more_common
				}
				factor = 2
			}
			add_trait = forest_fighter
		}
		100 = {
			trigger = {
				culture = {
					has_cultural_parameter = rough_terrain_expert_trait_more_common
				}
				NOT = { has_trait = rough_terrain_expert }
				OR = {
					any_directly_owned_province = {
						OR = {
							terrain = mountains
							terrain = hills
							terrain = wetlands
						}
					}
					AND = {
						exists = scope:educator
						scope:educator = {
							any_directly_owned_province = {
								OR = {
									terrain = mountains
									terrain = hills
									terrain = wetlands
								}
							}
						}
					}
					AND = {
						NOT = { exists = scope:educator }
						liege ?= {
							any_directly_owned_province = {
								OR = {
									terrain = mountains
									terrain = hills
									terrain = wetlands
								}
							}
						}
					}
				}
			}
			modifier = {
				culture = {
					has_cultural_parameter = rough_terrain_expert_trait_more_common
				}
				factor = 2
			}
			add_trait = rough_terrain_expert
		}
		# Commander+ 1.20 - grouped extension
		2900 = {
			trigger = { cmd_plus_has_available_random_commander_trait = yes }
			cmd_plus_give_random_commander_trait_effect = yes
		}
	}
}

culture_randomize_commander_trait_effect = {
	random_list = {
		100 = {
			trigger = {
				NOT = { has_trait = rough_terrain_expert }
				scope:educator = {
					has_trait = rough_terrain_expert
				}
			}
			add_trait = rough_terrain_expert
		}
		100 = {
			trigger = {
				NOT = { has_trait = logistician }
				scope:educator = {
					has_trait = logistician
				}
			}
			add_trait = logistician
		}
		100 = {
			trigger = {
				NOT = { has_trait = military_engineer }
				scope:educator = {
					has_trait = military_engineer
				}
			}
			add_trait = military_engineer
		}
		100 = {
			trigger = {
				NOT = { has_trait = aggressive_attacker }
				scope:educator = {
					has_trait = aggressive_attacker
				}
			}
			add_trait = aggressive_attacker
		}
		100 = {
			trigger = {
				NOT = { has_trait = unyielding_defender }
				scope:educator = {
					has_trait = unyielding_defender
				}
			}
			add_trait = unyielding_defender
		}
		100 = {
			trigger = {
				NOT = { has_trait = forder }
				scope:educator = {
					has_trait = forder
				}
			}
			add_trait = forder
		}
		100 = {
			trigger = {
				NOT = { has_trait = flexible_leader }
				scope:educator = {
					has_trait = flexible_leader
				}
			}
			add_trait = flexible_leader
		}
		100 = {
			trigger = {
				NOT = { has_trait = desert_warrior }
				scope:educator = {
					has_trait = desert_warrior
				}
			}
			add_trait = desert_warrior
		}
		100 = {
			trigger = {
				NOT = { has_trait = jungle_stalker }
				scope:educator = {
					has_trait = jungle_stalker
				}
			}
			add_trait = jungle_stalker
		}
		100 = {
			trigger = {
				NOT = { has_trait = winter_soldier }
				scope:educator = {
					has_trait = winter_soldier
				}
			}
			add_trait = winter_soldier
		}
		100 = {
			trigger = {
				NOT = { has_trait = reaver }
				scope:educator = {
					has_trait = reaver
				}
			}
			add_trait = reaver
		}
		100 = {
			trigger = {
				NOT = { has_trait = reckless }
				scope:educator = {
					has_trait = reckless
				}
			}
			add_trait = reckless
		}
		100 = {
			trigger = {
				NOT = { has_trait = holy_warrior }
				scope:educator = {
					has_trait = holy_warrior
				}
			}
			add_trait = holy_warrior
		}
		100 = {
			trigger = {
				NOT = { has_trait = organizer }
				scope:educator = {
					has_trait = organizer
				}
			}
			add_trait = organizer
		}
		100 = {
			trigger = {
				NOT = { has_trait = forest_fighter }
				scope:educator = {
					has_trait = forest_fighter
				}
			}
			add_trait = forest_fighter
		}
		100 = {
			trigger = {
				NOT = { has_trait = cautious_leader }
				scope:educator = {
					has_trait = cautious_leader
				}
			}
			add_trait = cautious_leader
		}
		100 = {
			trigger = {
				NOT = { has_trait = open_terrain_expert }
				scope:educator = {
					has_trait = open_terrain_expert
				}
			}
			add_trait = open_terrain_expert
		}
		# Commander+ 1.20 - grouped extension
		2900 = {
			trigger = { cmd_plus_educator_has_teachable_commander_trait = yes }
			cmd_plus_give_random_commander_trait_from_educator_effect = yes
		}
	}
}
