﻿##############
# WAR VALUES #
##############

# Truce Durations
## Since we want these to work out to nice, even numbers, we calc them manually rather than use multipliers.
standard_truce_duration_days = {
	value = 1825
	# Deductions.
	## Flexible truces perk.
	if = {
		limit = {
			scope:attacker = { has_perk = flexible_truces_perk }
		}
		add = -450
	}
	## Certain struggle phases.
	if = {
		limit = {
			scope:attacker = {
				any_character_struggle = {
					is_struggle_parameter_active_secondary_character_involvement_either_trigger = {
						PARAMETER = truces_by_involved_or_interlopers_within_region_shorter
						CHAR = scope:defender
					}
				}
			}
		}
		add = -900
	}
	if = {
		limit = {
			scope:attacker = {
				any_character_struggle = {
					is_struggle_parameter_active_secondary_character_involvement_either_trigger = {
						PARAMETER = truces_by_involved_or_interlopers_within_region_longer
						CHAR = scope:defender
					}
				}
			}
		}
		add = 900
	}
	# A truce should at least give a 2-year breather.
	min = 730
	if = {
		limit = {
			scope:attacker = {
				any_character_war = {
					primary_attacker = scope:attacker
					primary_defender = scope:defender
					using_cb = fp2_border_raid
				}
			}
		}
		multiply = 2
	}
}

#Victory Prestige Experience Gain
mongol_invasion_cb_prestige_experience_gain = 10

#Ally contribution prestige gain
mongol_invasion_cb_ally_prestige = 100

#Prestige gain
mongol_invasion_cb_prestige_gain = 250

#White peace prestige values
mongol_invasion_cb_prestige_white_peace = -100

# Determined Independence Cultural Tradition
determined_independence_defensive_advantage_value = 15

#############
# Raid
#############

# Practiced Pirates Cultural Tradition
not_tribal_raid_prestige_multiplier = 1.5

raid_gold_value = {	#How much cash does this settlement generate in a raid?
	value = monthly_income
	multiply = 10

	#Sensible max-mins.
	min = 30
	max = 100

	#Give a whole number.
	ceiling = yes
}

tour_tax_gold_value = {
	value = monthly_income
	multiply = 4

	#Give a whole number.
	ceiling = yes
}

viking_conquest_ai_score_value = {
	value = 1
	scope:attacker = {
		if = {
			limit = {
				can_use_viking_invasion_cbs_trigger = yes
			}
			if = {
				limit = { NOT = { culture = scope:defender.culture } }
				add = 0.5
				if = {
					limit = {
						NOT = { culture = { has_same_culture_heritage = scope:defender.culture } }
					}
					add = 0.5
				}
			}
			if = {
				limit = { NOT = { faith = scope:defender.faith } }
				add = 0.5
				if = {
					limit = { NOT = { faith.religion = scope:defender.faith.religion } }
					add = 0.5
				}
			}
			if = {
				limit = {
					scope:defender.faith = {
						has_doctrine_parameter = unreformed
					}
				}
				multiply = 0.2
			}
			if = {
				limit = {
					scope:defender.faith = scope:attacker.faith
				}
				multiply = 0.2
			}
			if = { # Russian Vikings stay home
				limit = {
					scope:attacker = {
						capital_province = {
							geographical_region = world_europe_east
						}
						NOT = {
							character_is_realm_neighbor = scope:defender
						}
					}
				}
				multiply = 0.1
			}
			if = { # Norsemen should prefer their historical targets
				limit = {
					scope:attacker = {
						OR = {
							capital_province = {
								geographical_region = world_europe_north
							}
							capital_province = {
								geographical_region = world_europe_west
							}
							capital_province = {
								geographical_region = world_europe_west_francia
							}
							capital_province = {
								geographical_region = world_europe_west_germania
							}
						}
					}
					scope:defender = {
						OR = {
							capital_province = {
								geographical_region = world_europe_west
							}
							capital_province = {
								geographical_region = world_europe_west_francia
							}
							capital_province = {
								geographical_region = world_europe_west_germania
							}
						}
					}
				}
				multiply = 10
			}
			if = { # Norsemen should not rush the Pope...
				limit = {
					scope:attacker.faith.religion = faith:norse_pagan.religion
					scope:defender = {
						has_title = title:k_papal_state
					}
				}
				multiply = 0.01
			}
		}
		# Haesteinn needs to stop merc'ing East Francia when the resulting kingdom simply will not last.
		if = {
			limit = { this = character:6878 }
			# Assuming the player hasn't opted into batshit Vikings.
			if = {
				limit = {
					NOT = { has_game_rule = fp1_scandi_adventurers_apocalyptic }
				}
				# Tell him to calm it down a bit and pick a damned duchy realm or something.
				if = {
					limit = {
						scope:defender = {
							OR = {
								realm_size >= massive_realm_size
								highest_held_title_tier >= tier_kingdom
							}
						}
					}
					multiply = 0
				}
				# ... and a bit of bonus score if said-realm is an NPC Mercia to get him to behave a bit more historically.
				if = {
					limit = {
						scope:defender = {
							primary_title = title:d_hereford
							is_independent_ruler = yes
							is_ai = yes
						}
					}
					multiply = 100
				}
			}
			# ... in which case, go extra wild.
			else_if = {
				limit = { has_game_rule = fp1_scandi_adventurers_apocalyptic }
				# Nothing but a shiny new kingdom will satisfy apocalypse-Haesteinn.
				if = {
					limit = {
						scope:defender = { highest_held_title_tier <= tier_duchy }
					}
					multiply = 0
				}
			}
		}
	}
}

struggle_conquest_ai_score_value = {
	value = 1
	scope:attacker = {
		# Are they a different faith than me?
		if = {
			limit = {
				NOT = { faith = scope:defender.faith }
			}
			add = 1
		}
		# Are they a different culture than me?
		if = {
			limit = {
				NOT = { culture = scope:defender.culture }
			}
			add = 1
		}
		# Do I have a negative relationship with them?
		if = {
			limit = { has_relation_nemesis = scope:defender }
			add = 2
		}
		else_if = {
			limit = {
				has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:defender }
			}
			add = 1
		}
		# Do I have a positive relationship with them?
		if = {
			limit = {
				OR = {
					has_relation_soulmate = scope:defender
					has_relation_best_friend = scope:defender
				}
			}
			add = -5
		}
		else_if = {
			limit = {
				has_any_good_relationship_with_character_trigger = { CHARACTER = scope:defender }
			}
			add = -1
		}
		# Multiply this up or down per the phase.
		## Some phases make people hunger for violence...
		if = {
			limit = {
				any_character_struggle = {
					is_struggle_type = iberian_struggle
					is_struggle_phase = struggle_iberia_phase_hostility
				}
				# Unless you're just not that sort of person.
				NOR = {
					has_trait = content
					has_trait = compassionate
				}
			}
			multiply = 2
		}
		## ... but in others, it seems abhorrent.
		if = {
			limit = {
				any_character_struggle = {
					is_struggle_type = iberian_struggle
					OR = {
						is_struggle_phase = struggle_iberia_phase_compromise
						is_struggle_phase = struggle_iberia_phase_conciliation
					}
				}
				NOR = {
					has_trait = ambitious
					has_trait = callous
					has_trait = sadistic
				}
			}
			multiply = 0.5
		}
	}
}

byzantium_conquests_ai_score_value = {
	value = 1
	# Are we part of the Roman empire?
	if = {
		limit = {
			scope:attacker = {
				# We only care about governors and above, so don't worry about counts even if they're within the empire.
				highest_held_title_tier >= tier_duchy
				# Now check title ownership.
				OR = {
					has_title = title:e_byzantium
					has_title = title:e_roman_empire
					any_liege_or_above = {
						OR = {
							has_title = title:e_byzantium
							has_title = title:e_roman_empire
						}
					}
					# Account for the 4th crusade.
					## Y'know, roughly.
					AND = {
						NOT = {
							exists = title:e_byzantium
						}
						primary_title = {
							OR = {
								empire = title:e_byzantium
								empire = title:e_latin_empire
							}
						}
						OR = {
							culture = { has_cultural_pillar = heritage_byzantine }
							culture = culture:greek
							culture = {
    								any_parent_culture_or_above = {
									this = culture:greek
								}
							} 
						}
					}
				}
			}
		}
		# Ok, cool. Now let's set some historical priorities.
		every_target_title = {
			title_province = {
				# Constantinople is king.
				if = {
					limit = { county = title:c_byzantion }
					add = 100
				}
				## We literally do not care about Rome: New York beats OG York, New Rome beats OG Rome.
				# Next, we prioritise Anatolia.
				else_if = {
					limit = { geographical_region = ghw_region_anatolia }
					add = 5
				}
				# Then Greece and the Balkans.
				else_if = {
					limit = {
						OR = {
							geographical_region = ghw_region_greece
							geographical_region = ghw_region_thessalonika
							geographical_region = custom_eastern_balkans
						}
					}
					add = 4.5
				}
				# Then Syria and co.
				else_if = {
					limit = { geographical_region = custom_roman_syria_palestina }
					add = 4
				}
				# Egypt.
				else_if = {
					limit = { geographical_region = custom_roman_aegyptus }
					add = 3.5
				}
				# Mesopotamia.
				else_if = {
					limit = { geographical_region = custom_roman_mesopotamia }
					add = 3
				}
				# Illyria.
				else_if = {
					limit = { geographical_region = custom_roman_illyricum }
					add = 2.5
				}
				# North Africa.
				else_if = {
					limit = {
						OR = {
							geographical_region = custom_roman_cyrenaica
							geographical_region = custom_roman_africa
							geographical_region = custom_roman_mauretania
						}
					}
					add = 2
				}
				# Italy.
				else_if = {
					limit = { geographical_region = ghw_region_italy }
					add = 1.8
				}
				# Iberia.
				else_if = {
					limit = { geographical_region = custom_roman_hispania }
					add = 1.5
				}
				# The remainder.
				## Anything we missed in the east.
				else_if = {
					# You say "why not use Eastern Roman Empire borders?", I say, if the players are gonna obsess over historical borders then so too shall the AI.
					limit = { geographical_region = custom_theodosian_ere }
					add = 1
				}
				## Then total.
				else_if = {
					limit = { geographical_region = custom_roman_empire }
					add = 0.5
				}
				# And _otherwise_, we probably don't want to even look at this thing.
				## May be overridden by weird preferance combination from other values, but generally we'll hopefully get a fairly insular, naval gazing Rome.
			}
		}
	}
}

muslim_invasions_prefer_nonmuslims_ai_score_value = {
	value = 1
	if = {
		limit = {
			scope:attacker.religion = religion:islam_religion
		}
		every_in_list = {
			list = target_titles
			if = {
				limit = {
					OR = {
						AND = {
							tier = tier_county
							NOT = { holder.top_liege.religion = religion:islam_religion }
							any_county_province = {
								geographical_region = ghw_region_holy_land
							}
						}
						AND = {
							tier > tier_county
							any_in_de_jure_hierarchy = {
								tier = tier_county
								NOT = { holder.top_liege.religion = religion:islam_religion }
								any_county_province = {
									geographical_region = ghw_region_holy_land
								}
							}
						}
					}
				}
				add = 1000
			}
			else_if = {
				limit = {
					OR = {
						AND = {
							tier = tier_county
							NOT = { holder.top_liege.religion = religion:islam_religion }
							any_county_province = {
								OR = {
									geographical_region = ghw_region_anatolia
									geographical_region = world_india
								}
							}
						}
						AND = {
							tier > tier_county
							any_in_de_jure_hierarchy = {
								tier = tier_county
								NOT = { holder.top_liege.religion = religion:islam_religion }
								any_county_province = {
									OR = {
										geographical_region = ghw_region_anatolia
										geographical_region = world_india
									}
								}
							}
						}
					}
				}
				add = 200
			}
			else_if = {
				limit = {
					OR = {
						AND = {
							tier = tier_county
							NOT = { holder.top_liege.religion = religion:islam_religion }
						}
						AND = {
							tier > tier_county
							any_in_de_jure_hierarchy = {
								tier = tier_county
								NOT = { holder.top_liege.religion = religion:islam_religion }
							}
						}
					}
				}
				add = 2
			}
		}
	}
}

# Raid for captives
raid_for_captives_ai_score_value = {
	value = 10
	scope:attacker = {
		if = {
			limit = {
				piety < 0
			}
			add = 15
		}
		if = {
			limit = {
				ai_zeal >= medium_positive_ai_value
				piety < 500
			}
			add = 5
		}
		if = {
			limit = {
				ai_zeal >= very_high_positive_ai_value
			}
			add = ai_zeal
		}
		if = {
			limit = {
				piety > 500
			}
			multiply = 0.5
		}
		if = {
			limit = {
				ai_zeal < 0
				NOT = {
					piety < -100
				}
			}
			multiply = 0
		}
	}
}

# Artifact wars

relic_artifact_war_ai_score_value = {
	value = 10
	scope:attacker = {
		if = {
			limit = {
				ai_greed > 0
			}
			add = {
				value = ai_greed
				divide = 2
			}
		}
		if = {
			limit = {
				ai_zeal > 0
			}
			add = ai_zeal
		}
	}
}

artifact_war_ai_score_value = {
	value = 10
	scope:attacker = {
		if = {
			limit = {
				ai_greed > 0
			}
			add = {
				value = ai_greed
				divide = 2
			}
		}
		if = {
			limit = {
				ai_vengefulness > 0
			}
			add = ai_vengefulness
		}
	}
}

#############
# Vassalization CB
#############

vassalize_default_size = 4

vassalize_growth_per_innovation = 3

vassalization_size_limit = {
	value = vassalize_default_size
	scope:attacker = {
		if = {
			limit = {
				culture = {
					has_innovation = innovation_casus_belli
				}
			}
			add = vassalize_growth_per_innovation
		}
		if = {
			limit = {
				culture = {
					has_innovation = innovation_chronicle_writing
				}
			}
			add = vassalize_growth_per_innovation
		}
		if = {
			limit = {
				culture = {
					has_innovation = innovation_divine_right
				}
			}
			add = vassalize_growth_per_innovation
		}
		if = {
			limit = {
				culture = {
					has_innovation = innovation_rightful_ownership
				}
			}
			add = vassalize_growth_per_innovation
		}
	}
}

#############
# GHWs
#############
third_of_defenders_strength = {
	value = ghw_defenders_strength
	multiply = 0.33
}

#############
# Siege
#############

siege_base_capture_chance = {
	value = 35

	# Dynasty Perk: Practiced Kidnappers
	if = {
		limit = {
			scope:occupant = {
				exists = dynasty
				dynasty = { has_dynasty_perk = fp1_pillage_legacy_3 }
			}
		}
		add = 20
	}
	# Cultural Parameter: State Ransoms
	if = {
		limit = {
			OR = {
				# Either you're involved in large groups of the holding surrendering...
				scope:barony.culture = { has_cultural_parameter = knights_die_less_but_are_captured_more }
				# ... or you know your liege will pay your ransom.
				scope:barony.holder.culture = { has_cultural_parameter = knights_die_less_but_are_captured_more }
			}
			# Ransoms or no, the primary participants & their heirs know better than to surrender.
			character_is_potential_valuable_prisoner = no
			# And independent characters likewise have no incentive.
			is_independent_ruler = no
		}
		add = 50
	}
}
raid_base_capture_chance = {
	value = 20

	if = {
		limit = {
			exists = root.army_commander
		}
		# Trait: Viking
		if = {
			limit = { root.army_commander = { has_trait = viking } }
			add = 5
		}
		# Dynasty Perk: Practiced Kidnappers
		if = {
			limit = {
				exists = root.army_commander.dynasty
				root.army_commander.dynasty = { has_dynasty_perk = fp1_pillage_legacy_3 }
			}
			add = 20
		}
	}
}

county_control_loss_value = {
	value = -40

	# Dynasty Perk: No Quarter
	if = {
		limit = {
			root = {
				exists = dynasty
				dynasty = { has_dynasty_perk = fp1_pillage_legacy_5 }
			}
		}
		add = -40
	}
}

raid_county_control_loss_value = {
	value = -10

	# Dynasty Perk: No Quarter
	if = {
		limit = {
			scope:raider ?= {
				exists = dynasty
				dynasty = { has_dynasty_perk = fp1_pillage_legacy_5 }
			}
		}
		add = -20
	}
}

#############
# CB Costs
#############


scale_10_war_defender_win = {
	value = 10

	if = {
		limit= {
			scope:defender.culture = {
				has_cultural_parameter = more_fame_for_successful_defensive_wars
			}
		}
		multiply = 2
	}
}

######################
# AI Decision Making #
######################
# The two effects below are to be used in combination as "root_military_strength_higher_than_value > target_military_strength_root_value" to check player vs enemy strength
root_military_strength_higher_than_value = { # Once again joe saves the day or erm, script.
	value = 0
	add = max_military_strength # Add num of troops
	if = {
		limit = {
			any_ally = {
				NOT = { has_truce = scope:target_military } 
			}
		}
		every_ally = {
			limit = {
				NOT = { has_truce = scope:target_military }
			}
			add = max_military_strength
		}
	}
	if = {
		limit = { exists = var:ai_strength_multiplier }
		multiply = var:ai_strength_multiplier  # 1.25 == 25% stronger than, remember to potty train your script and have it remove the variable after usage!!
	}
}

target_military_strength_root_value = { # One above calcs player strength (plus multiplier), this one is enemy strenth
	value = 0
	add = scope:target_military.max_military_strength # this should be a character, probably a top liege
	if = {
		limit = {
			any_ally = {
				NOT = { has_truce = root } 
			}
		}
		every_ally = {
			limit =	{
				NOT = { has_truce = root }
			}
			add = max_military_strength
		}
	}
}

war_attacker_total_strength_value = {
	value = 0
	every_war_attacker = { add = max_military_strength }
}

war_defender_total_strength_value = {
	value = 0
	every_war_defender = { add = max_military_strength }
}

war_attacker_total_strength_halved_value = {
	value = war_attacker_total_strength_value
	divide = 2
}

war_defender_total_strength_halved_value = {
	value = war_defender_total_strength_value
	divide = 2
}

war_attacker_total_strength_tenth_value = {
	value = war_attacker_total_strength_value
	divide = 10
}

war_defender_total_strength_tenth_value = {
	value = war_defender_total_strength_value
	divide = 10
}

war_attacker_total_current_strength_value = {
	value = 0
	every_war_attacker = { add = current_military_strength }
}

war_defender_total_current_strength_value = {
	value = 0
	every_war_defender = { add = current_military_strength }
}

war_attacker_total_current_strength_halved_value = {
	value = war_attacker_total_current_strength_value
	divide = 2
}

war_defender_total_current_strength_halved_value = {
	value = war_defender_total_current_strength_value
	divide = 2
}

war_attacker_total_current_strength_tenth_value = {
	value = war_attacker_total_current_strength_value
	divide = 10
}

war_defender_total_current_strength_tenth_value = {
	value = war_defender_total_current_strength_value
	divide = 10
}

war_attacker_total_current_strength_divided_by_defender_value = {
	value = war_attacker_total_current_strength_value
	divide = war_defender_total_current_strength_value
	round = yes
}

war_defender_total_current_strength_divided_by_attacker_value = {
	value = war_defender_total_current_strength_value
	divide = war_attacker_total_current_strength_value
	round = yes
}

war_total_participants_current_strength_value = {
	value = 0
	every_war_participant = { add = current_military_strength }
}

total_war_attacker_strength_value = {
	value = 0
	every_character_war = {
		limit = { prev = primary_defender }
		every_war_attacker = { add = current_military_strength }
	}
}

total_war_enemy_strength_value = {
	value = 0
	every_war_enemy = { add = current_military_strength }
}
