Files
moi/mod/common/unit_leader/00_traits.txt
2025-09-10 16:01:00 +02:00

3659 lines
69 KiB
Plaintext

# leader_traits contain a list of UnitLeaderTrait with the following structure:
# trait_key = {
# type = all # or either of field_marshal, corps_commander, navy
# trait_type = basic_trait # or either of status_trait, personality_trait, assignable_trait, basic_terrain_trait, assignable_terrain_trait, exile
# attack_skill = 0 # integer
# defense_skill = 0 # integer
# logistics_skill = 0 # integer
# planning_skill = 0 # integer
# maneuvering_skill = 0 # integer
# coordination_skill = 0 # integer
# attack_skill_factor = 0.0 # decimal
# defense_skill_factor = 0.0 # decimal
# logistics_skill_factor = 0.0 # decimal
# planning_skill_factor = 0.0 # decimal
# maneuvering_skill_factor = 0.0 # decimal
# coordination_skill_factor = 0.0 # decimal
# show_in_combat = yes # boolean
# override_effect_tooltip = "" # loc key
# custom_effect_tooltip = "" # loc key
# custom_prerequisite_tooltip = "" # loc key
# custom_gain_xp_trigger_tooltip = "" # loc key
# mutually_exclusive = other_trait # trait key
# parent = { # Can be added multiple times
# traits = {XXX YYY ZZZ} # A list of other traits that
# num_parents_needed = 1 # The number of the above traits that must be true
# }
# any_parent = { XXX YYY ZZZ } # shorthand for parent when num_parents_needed are defaulted to 1
# all_parents = { XXX YYY ZZZ } # shorthand for parent when num_parents_needed are the same as the number of parents
# gui_row = 0 # integer, starts at 0, unset or -1 means the trait does not appear in unlockable trait tree.
# gui_column = 0 # integer, starts at 0, unset or -1 means auto
# allowed = trigger # scope is a unit leader
# prerequisites = trigger # scope is an unit leader
# gain_xp = trigger # scope is a combatant
# gain_xp_leader = trigger # scope is a unit leader. ROOT is country you are from and FROM is any target nationality for agents
# gain_xp_on_spotting = 0 # integer
# modifier = { } # list of modifiers
# non_shared_modifier = {} #
# corps_commander_modifier = {} #
# field_marshal_modifier = {} #
# sub_unit_modifiers = { # list of sub unit def
# # e.g.
# submarine {
# units = {} # list of adjusters
# # list of modifiers e.g.
# naval_visibility = -0.1
# }
# }
# trait_xp_factor = {} # list of trait_key/decimal
# on_add = effect # scope is an unit leader
# on_remove = effect # scope is an unit leader
# daily_effect = effect # scope is an unit leader
# cost = 1000 # integer
# ai_will_do = {} # weight
# new_commander_weight = {} # weight
# enable_ability = ability_key
#}
leader_traits = {
MEL_crusader = {
random = no
modifier = {
planning_speed = 1.0
hidden_modifier = {
army_attack_factor = 999.99
}
}
}
##################################
# Common Traits
##################################
old_guard = {
type = land
trait_type = personality_trait
modifier = {
max_dig_in = 1
}
non_shared_modifier = {
experience_gain_factor = -0.25
}
new_commander_weight = {
factor = 1
modifier = {
FROM = { has_idea = best_of_the_best_spirit }
factor = 0
}
modifier = {
FROM = { has_idea = academy_scholarships_spirit }
factor = 0
}
modifier = { #Purged Junior Army Officers
FROM = { has_idea = SOV_purged_junior_army_officers_3 }
factor = 0
}
}
}
brilliant_strategist = {
type = land
trait_type = personality_trait
attack_skill = 1
planning_skill = 1
attack_skill_factor = 1
planning_skill_factor = 1
new_commander_weight = {
factor = 1
modifier = {
FROM = { has_idea = best_of_the_best_spirit }
factor = 0
}
modifier = {
FROM = { has_idea = academy_scholarships_spirit }
factor = 0
}
modifier = { #Purged Junior Army Officers
FROM = { has_idea = SOV_purged_junior_army_officers_3 }
factor = 0
}
}
}
inflexible_strategist = {
type = land
trait_type = personality_trait
defense_skill = 1
logistics_skill = 1
defense_skill_factor = 1
logistics_skill_factor = 1
new_commander_weight = {
factor = 1
modifier = {
is_army_leader = yes
FROM = { has_idea = best_of_the_best_spirit }
factor = 0
}
modifier = {
FROM = { has_idea = academy_scholarships_spirit }
factor = 0
}
modifier = { #Purged Junior Army Officers
FROM = { has_idea = SOV_purged_junior_army_officers_3 }
factor = 0
}
}
}
politically_connected = {
type = land
trait_type = personality_trait
non_shared_modifier = {
experience_gain_factor = -0.1
promote_cost_factor = -0.5
}
new_commander_weight = {
factor = 1
modifier = {
is_army_leader = yes
FROM = { has_idea = best_of_the_best_spirit }
factor = 0
}
modifier = {
is_navy_leader = yes
FROM = { has_idea = best_of_the_best_naval_academy_spirit }
factor = 0
}
modifier = {
FROM = { has_idea = academy_scholarships_spirit }
factor = 0
}
modifier = {
FROM = { has_idea = naval_academy_scholarships_spirit }
factor = 0
}
}
planning_skill_factor = 1
logistics_skill_factor = 1
}
war_hero = {
type = { land navy }
trait_type = personality_trait
non_shared_modifier = { # WARNING! Changing the value of these modifiers requires changing them also in the tooltip ITA_heroes_of_the_nation_general_traits_tt
promote_cost_factor = -0.5
reassignment_duration_factor = 0.5 # +50% cost to replace leader
}
new_commander_weight = {
factor = 0 # Scripted starting leaders only
}
attack_skill_factor = 1
planning_skill_factor = 1
}
career_officer = {
type = land
trait_type = personality_trait
non_shared_modifier = {
promote_cost_factor = -0.25
}
new_commander_weight = {
factor = 1
modifier = {
FROM = { has_idea = best_of_the_best_spirit }
factor = 0
}
modifier = {
FROM = { has_idea = academy_scholarships_spirit }
factor = 0
}
modifier = { #Purged Junior Army Officers
FROM = { has_idea = SOV_purged_junior_army_officers_3 }
factor = 0
}
}
planning_skill_factor = 1
logistics_skill_factor = 1
}
trait_cautious = {
type = land
trait_type = personality_trait
modifier = {
planning_speed = -0.20
wounded_chance_factor = -0.5
}
new_commander_weight = {
factor = 1
modifier = {
has_trait = trait_reckless
factor = 0
}
modifier = {
FROM = { has_idea = best_of_the_best_spirit }
factor = 0
}
modifier = {
FROM = { has_idea = academy_scholarships_spirit }
factor = 0
}
modifier = { #Purged Junior Army Officers
FROM = { has_idea = SOV_purged_junior_army_officers_3 }
factor = 0
}
}
defense_skill_factor = 1
logistics_skill_factor = 1
}
trait_reckless = {
type = land
trait_type = personality_trait
modifier = {
planning_speed = 0.20
wounded_chance_factor = 0.5 # +50% chance to get wounded
}
new_commander_weight = {
factor = 1
modifier = {
has_trait = trait_cautious
factor = 0
}
modifier = {
FROM = { has_idea = best_of_the_best_spirit }
factor = 0
}
modifier = {
FROM = { has_idea = academy_scholarships_spirit }
factor = 0
}
modifier = { #Purged Junior Army Officers
FROM = { has_idea = SOV_purged_junior_army_officers_3 }
factor = 0
}
}
attack_skill_factor = 1
defense_skill_factor = -1
planning_skill_factor = 1
}
media_personality = {
type = land
trait_type = personality_trait
non_shared_modifier = {
reassignment_duration_factor = 1 # +100% cost to replace leader
}
attack_skill_factor = 1
defense_skill_factor = 1
new_commander_weight = {
factor = 1
modifier = {
FROM = { has_idea = best_of_the_best_spirit }
factor = 0
}
modifier = {
FROM = { has_idea = academy_scholarships_spirit }
factor = 0
}
modifier = { #Purged Junior Army Officers
FROM = { has_idea = SOV_purged_junior_army_officers_3 }
factor = 0
}
}
}
harsh_leader = {
type = land
trait_type = personality_trait
attack_skill = 1
modifier = {
army_morale_factor = -0.10
}
new_commander_weight = {
factor = 1
modifier = {
FROM = { has_idea = best_of_the_best_spirit }
factor = 0
}
modifier = {
FROM = { has_idea = academy_scholarships_spirit }
factor = 0
}
modifier = { #Purged Junior Army Officers
FROM = { has_idea = SOV_purged_junior_army_officers_3 }
factor = 0
}
}
attack_skill_factor = 1
logistics_skill_factor = 1
}
bearer_of_artillery = { # Reserved for Wojtek
type = corps_commander
trait_type = personality_trait
modifier = {
army_artillery_attack_factor = 0.15
}
new_commander_weight = {
factor = 0
}
}
infantry_officer = {
type = land
trait_type = personality_trait
unit_trigger = {
OR = {
division_has_majority_template = infantry
division_has_majority_template = bicycle_battalion
division_has_majority_template = marine
division_has_majority_template = mountaineers
division_has_majority_template = paratrooper
division_has_majority_template = penal_battalion
owner = {
has_idea = mass_assault_academy_spirit
}
}
owner = {
NOT = {
OR = {
has_idea = best_of_the_best_spirit
has_idea = academy_scholarships_spirit
has_idea = SOV_purged_junior_army_officers_3
}
}
}
}
trait_xp_factor = {
infantry_leader = 1 #+100%
}
new_commander_weight = {
factor = 1
modifier = {
FROM = {
has_idea = mass_assault_academy_spirit
}
factor = 2
}
modifier = {
FROM = { has_idea = best_of_the_best_spirit }
factor = 0
}
modifier = {
FROM = { has_idea = academy_scholarships_spirit }
factor = 0
}
modifier = { #Purged Junior Army Officers
FROM = { has_idea = SOV_purged_junior_army_officers_3 }
factor = 0
}
modifier = {
FROM = {
has_dlc = "By Blood Alone"
}
factor = 0
}
}
defense_skill_factor = 1
planning_skill_factor = 1
}
cavalry_officer = {
type = land
trait_type = personality_trait
unit_type = {
type = cavalry
type = camelry
type = motorized
type = mechanized
}
unit_trigger = {
OR = {
division_has_majority_template = cavalry
division_has_majority_template = camelry
division_has_majority_template = motorized
division_has_majority_template = mechanized
}
owner = {
NOT = {
OR = {
has_idea = best_of_the_best_spirit
has_idea = academy_scholarships_spirit
has_idea = SOV_purged_junior_army_officers_3
}
}
}
}
trait_xp_factor = {
cavalry_leader = 1 #+100%
}
new_commander_weight = {
factor = 1
modifier = {
FROM = { has_idea = best_of_the_best_spirit }
factor = 0
}
modifier = {
FROM = { has_idea = academy_scholarships_spirit }
factor = 0
}
modifier = { #Purged Junior Army Officers
FROM = { has_idea = SOV_purged_junior_army_officers_3 }
factor = 0
}
modifier = {
FROM = {
has_dlc = "By Blood Alone"
}
factor = 0
}
}
attack_skill_factor = 1
logistics_skill_factor = 1
}
armor_officer = {
type = land
trait_type = personality_trait
trait_xp_factor = {
panzer_leader = 1 #+100%
}
unit_trigger = {
OR = {
division_has_majority_template = light_armor
division_has_majority_template = medium_armor
division_has_majority_template = heavy_armor
division_has_majority_template = super_heavy_armor
owner = {
has_idea = mobile_warfare_academy_spirit
}
}
owner = {
NOT = {
OR = {
has_idea = best_of_the_best_spirit
has_idea = academy_scholarships_spirit
has_idea = SOV_purged_junior_army_officers_3
}
}
}
}
new_commander_weight = {
factor = 1
modifier = {
FROM = {
has_idea = mobile_warfare_academy_spirit
}
factor = 2
}
modifier = {
FROM = { has_idea = best_of_the_best_spirit }
factor = 0
}
modifier = {
FROM = { has_idea = academy_scholarships_spirit }
factor = 0
}
modifier = { #Purged Junior Army Officers
FROM = { has_idea = SOV_purged_junior_army_officers_3 }
factor = 0
}
modifier = {
FROM = {
has_dlc = "By Blood Alone"
}
factor = 0
}
}
attack_skill_factor = 1
planning_skill_factor = 1
}
engineer_officer = {
type = land
trait_type = personality_trait
trait_xp_factor = {
trait_engineer = 1 #+100%
}
unit_trigger = {
OR = {
division_has_battalion_in_template = engineer
division_has_battalion_in_template = light_flame_tank
division_has_battalion_in_template = medium_flame_tank
division_has_battalion_in_template = heavy_flame_tank
owner = {
has_idea = superior_firepower_academy_spirit
}
}
owner = {
NOT = {
OR = {
has_idea = best_of_the_best_spirit
has_idea = academy_scholarships_spirit
}
}
}
}
new_commander_weight = {
factor = 1
modifier = {
FROM = { has_idea = superior_firepower_academy_spirit }
factor = 2
}
modifier = {
FROM = { has_idea = best_of_the_best_spirit }
factor = 0
}
modifier = {
FROM = { has_idea = academy_scholarships_spirit }
factor = 0
}
modifier = {
FROM = { has_dlc = "By Blood Alone" }
factor = 0
}
}
attack_skill_factor = 1
planning_skill_factor = 1
}
irregulars_officer = {
type = corps_commander
trait_type = personality_trait
allowed = {
FROM = {
OR = {
original_tag = ITA
original_tag = ETH
}
}
}
unit_type = {
type = cavalry
type = camelry
type = irregular_infantry
}
unit_trigger = {
OR = {
division_has_majority_template = cavalry
division_has_majority_template = camelry
division_has_majority_template = irregular_infantry
}
owner = {
OR = {
original_tag = ITA
original_tag = ETH
}
NOT = {
OR = {
has_idea = best_of_the_best_spirit
has_idea = academy_scholarships_spirit
}
}
}
}
modifier = {
modifier_army_sub_unit_irregular_infantry_attack_factor = 0.05
modifier_army_sub_unit_cavalry_speed_factor = 0.05
modifier_army_sub_unit_camelry_speed_factor = 0.05
out_of_supply_factor = -0.1
desert = {
movement = 0.1
}
}
new_commander_weight = {
base = 0
modifier = {
add = 0.5
FROM = { #Looks like the allowed parameter is doing NOTHING :D
OR = {
original_tag = ITA
original_tag = ETH
}
}
}
modifier = { #ITALY
factor = 2
FROM = {
has_completed_focus = ITA_comandante_diavolo
}
}
modifier = { #ITALY
factor = 2
FROM = {
has_completed_focus = ITA_proclaim_the_italian_empire
}
}
}
attack_skill_factor = 1
planning_skill_factor = 1
}
ascari_officer = {
type = corps_commander
trait_type = personality_trait
allowed = {
FROM = {
original_tag = ITA
}
}
unit_type = {
type = infantry
}
unit_trigger = {
division_has_majority_template = infantry
owner = {
original_tag = ITA
NOT = {
OR = {
has_idea = best_of_the_best_spirit
has_idea = academy_scholarships_spirit
}
}
}
}
modifier = {
modifier_army_sub_unit_infantry_defence_factor = 0.05
modifier_army_sub_unit_cavalry_defence_factor = 0.05
modifier_army_sub_unit_camelry_defence_factor = 0.05
desert = {
defence = 0.05
}
}
new_commander_weight = {
base = 0
modifier = {
add = 0.5
FROM = { #Looks like the allowed parameter is doing NOTHING :D
original_tag = ITA
}
}
modifier = { #ITALY
factor = 2
FROM = {
has_completed_focus = ITA_strengthen_ascari_corps
}
}
modifier = { #ITALY
factor = 2
FROM = {
has_completed_focus = ITA_novus_ordo
}
}
}
defense_skill_factor = 1
logistics_skill_factor = 1
}
militias_officer = {
type = corps_commander
trait_type = personality_trait
allowed = {
FROM = {
OR = {
original_tag = ITA
original_tag = SWI
original_tag = SWE
}
}
}
unit_type = {
type = militia
}
unit_trigger = {
division_has_majority_template = militia
owner = {
OR = {
original_tag = ITA
original_tag = SWI
original_tag = SWE
}
NOT = {
OR = {
has_idea = best_of_the_best_spirit
has_idea = academy_scholarships_spirit
}
}
}
}
modifier = {
modifier_army_sub_unit_militia_defence_factor = 0.05
modifier_army_sub_unit_militia_speed_factor = 0.05
modifier_army_sub_unit_militia_max_org_factor = 0.05
}
new_commander_weight = {
base = 0
modifier = {
add = 0.5
FROM = { #Looks like the allowed parameter is doing NOTHING :D
OR = {
original_tag = ITA
original_tag = SWI
}
}
}
modifier = { #ITALY
factor = 2
FROM = {
OR = {
has_completed_focus = ITA_strengthen_the_blackshirts
#TODO_Manu: Alt-hist focuses
}
}
}
modifier = { #ITALY
factor = 2
FROM = {
OR = {
has_completed_focus = ITA_divino_duce
has_completed_focus = ITA_a_greater_purpose
}
}
}
}
defense_skill_factor = 1
planning_skill_factor = 1
}
jaeger = {
type = land
trait_type = personality_trait
allowed = {
FROM = { original_tag = FIN }
}
trait_xp_factor = {
trickster = 1 #+100%
winter_specialist = 1 #+100%
commando = 1 #+100%
swamp_fox = 1 #+100%
ranger = 1 #+100%
hill_fighter = 1 #+100%
urban_assault_specialist = 1 #+100%
naval_invader = 1 #+100%
}
modifier = {
equipment_capture = 0.03
}
new_commander_weight = {
factor = 0
}
attack_skill_factor = 1
logistics_skill_factor = 1
}
##################################
# Field Marshal traits.
##################################
logistics_wizard = {
type = field_marshal
gain_xp = {
always = no # not gainable
}
cost = 1000
field_marshal_modifier = {
supply_consumption_factor = -0.15
}
enable_ability = extra_suplies
ai_will_do = {
factor = 1
}
gui_row = 0
trait_type = assignable_trait
any_parent = {organizer}
}
offensive_doctrine = {
type = field_marshal
gain_xp = {
always = no # not gainable
}
cost = 1000
field_marshal_modifier = {
org_loss_when_moving = -0.30
}
attack_skill = 1
slot = army_chief
specialist_advisor_trait = army_chief_offensive_1
expert_advisor_trait = army_chief_offensive_2
genius_advisor_trait = army_chief_offensive_3
ai_will_do = {
factor = 1
}
trait_type = assignable_trait
mutually_exclusive = defensive_doctrine
gui_row = 5
}
defensive_doctrine = {
type = field_marshal
gain_xp = {
always = no # not gainable
}
cost = 1000
field_marshal_modifier = {
max_dig_in_factor = 0.30
}
slot = army_chief
specialist_advisor_trait = army_chief_entrenchment_1
expert_advisor_trait = army_chief_entrenchment_2
genius_advisor_trait = army_chief_entrenchment_3
ai_will_do = {
factor = 1
}
trait_type = assignable_trait
mutually_exclusive = offensive_doctrine
gui_row = 6
}
fast_planner = {
type = field_marshal
gain_xp = {
always = no # not gainable
}
cost = 1000
field_marshal_modifier = {
planning_speed = 0.25
}
slot = army_chief
specialist_advisor_trait = army_chief_reform_1
expert_advisor_trait = army_chief_reform_2
genius_advisor_trait = army_chief_reform_3
ai_will_do = {
factor = 1
}
gui_row = 1
any_parent = { organizer }
mutually_exclusive = thorough_planner
trait_type = assignable_trait
}
thorough_planner = {
type = field_marshal
gain_xp = {
always = no # not gainable
}
cost = 1000
field_marshal_modifier = {
max_planning = 0.1
}
slot = army_chief
specialist_advisor_trait = army_chief_planning_1
expert_advisor_trait = army_chief_planning_2
genius_advisor_trait = army_chief_planning_3
ai_will_do = {
factor = 1
}
gui_row = 2
any_parent = { organizer }
mutually_exclusive = fast_planner
trait_type = assignable_trait
}
unyielding_defender = {
type = field_marshal
gain_xp = {
always = no # not gainable
}
prerequisites = {
has_trait = inflexible_strategist
}
cost = 1000
field_marshal_modifier = {
defence = 0.10
}
custom_effect_tooltip = INCREASED_COUNTERATTACK_CHANCE
slot = army_chief
specialist_advisor_trait = army_chief_defensive_1
expert_advisor_trait = army_chief_defensive_2
genius_advisor_trait = army_chief_defensive_3
ai_will_do = {
factor = 1
}
gui_row = 3
trait_type = assignable_trait
mutually_exclusive = aggressive_assaulter
}
aggressive_assaulter = {
type = field_marshal
gain_xp = {
always = no # not gainable
}
prerequisites = {
has_trait = brilliant_strategist
}
cost = 1000
field_marshal_modifier = {
breakthrough_factor = 0.10
}
custom_effect_tooltip = INCREASED_ASSAULT_AND_SHOCK_CHANCE
slot = army_chief
specialist_advisor_trait = army_chief_maneuver_1
expert_advisor_trait = army_chief_maneuver_2
genius_advisor_trait = army_chief_maneuver_3
ai_will_do = {
factor = 1
}
gui_row = 4
trait_type = assignable_trait
mutually_exclusive = unyielding_defender
}
organisational_leader = {
type = field_marshal
gain_xp = {
always = no # not gainable
}
cost = 1000
field_marshal_modifier = {
land_reinforce_rate = 0.02
}
slot = army_chief
specialist_advisor_trait = army_chief_organizational_1
expert_advisor_trait = army_chief_organizational_2
genius_advisor_trait = army_chief_organizational_3
ai_will_do = {
factor = 1
}
trait_type = assignable_trait
gui_row = 7
}
inspirational_leader = {
type = field_marshal
gain_xp = {
always = no # not gainable
}
cost = 1000
field_marshal_modifier = {
army_morale_factor = 0.10
}
slot = army_chief
specialist_advisor_trait = army_chief_morale_1
expert_advisor_trait = army_chief_morale_2
genius_advisor_trait = army_chief_morale_3
ai_will_do = {
factor = 1
}
trait_type = assignable_trait
gui_row = 8
}
expert_delegator = {
type = field_marshal
gain_xp = {
always = no # not gainable
}
cost = 1000
field_marshal_modifier = {
max_army_group_size = 2
}
slot = army_chief
specialist_advisor_trait = army_chief_drill_1
expert_advisor_trait = army_chief_drill_2
genius_advisor_trait = army_chief_drill_3
ai_will_do = {
factor = 1
}
trait_type = assignable_trait
any_parent = { skilled_staffer }
gui_row = 15
}
##################################
# Corps Commander traits.
##################################
organizer = {
type = corps_commander
gain_xp = {
check_variable = { num_battle_plans > 0 }
}
custom_gain_xp_trigger_tooltip = is_using_battle_plans
cost = 1000
modifier = {
planning_speed = 0.1
}
slot = high_command
specialist_advisor_trait = army_regrouping_1
expert_advisor_trait = army_regrouping_2
genius_advisor_trait = army_regrouping_3
ai_will_do = {
factor = 1
}
gui_row = 0
}
cavalry_leader = {
type = corps_commander
gain_xp = {
set_temp_variable = { temp = num_units }
multiply_temp_variable = { temp = 0.4 }
set_temp_variable = { cmm = num_cavalry }
add_to_temp_variable = { cmm = num_motorized }
add_to_temp_variable = { cmm = num_mechanized }
check_variable = { cmm > temp }
}
custom_gain_xp_trigger_tooltip = cavalary_ratio_over_40
cost = 1000
modifier = {
cavalry_attack_factor = 0.12
motorized_attack_factor = 0.12
mechanized_attack_factor = 0.12
}
slot = high_command
specialist_advisor_trait = army_cavalry_1
expert_advisor_trait = army_cavalry_2
genius_advisor_trait = army_cavalry_3
ai_will_do = {
factor = 1
}
gui_row = 3
}
infantry_leader = {
type = corps_commander
gain_xp = {
set_temp_variable = { temp = num_units }
multiply_temp_variable = { temp = 0.8 }
check_variable = { num_infantry > temp }
}
custom_gain_xp_trigger_tooltip = infantry_ratio_over_80
cost = 1000
modifier = {
army_infantry_defence_factor = 0.13
}
slot = high_command
specialist_advisor_trait = army_infantry_1
expert_advisor_trait = army_infantry_2
genius_advisor_trait = army_infantry_3
ai_will_do = {
factor = 1
}
gui_row = 6
}
skilled_staffer = {
type = corps_commander
gain_xp_leader = {
if = {
limit = { is_leading_army_group = yes }
check_variable = { num_units > 99 }
}
else = {
check_variable = { num_units > 23 }
}
}
custom_gain_xp_trigger_tooltip = fighting_with_enough_units
cost = 2000
corps_commander_modifier = {
max_commander_army_size = 6
}
ai_will_do = {
factor = 1
}
logistics_skill_factor = 2
gui_row = 15
slot = high_command
specialist_advisor_trait = army_logistics_1
expert_advisor_trait = army_logistics_2
genius_advisor_trait = army_logistics_3
}
trickster = {
type = corps_commander
gain_xp = {
OR = {
has_flanked_opponent = yes
opponent = { has_flanked_opponent = yes }
}
}
custom_gain_xp_trigger_tooltip = has_flanked
cost = 500
modifier = {
recon_factor = 0.25
}
ai_will_do = {
factor = 1
}
gui_row = 13
}
winter_specialist = {
type = corps_commander
gain_xp = {
temperature < -10
}
cost = 500
modifier = {
winter_attrition_factor = -0.5
}
ai_will_do = {
factor = 1
}
trait_type = basic_terrain_trait
gui_row = 7
}
adaptable = {
type = corps_commander
gain_xp = {
always = no # not gainable
}
cost = 1000
modifier = {
terrain_penalty_reduction = 0.30
acclimatization_cold_climate_gain_factor = 0.1
acclimatization_hot_climate_gain_factor = 0.1
}
ai_will_do = {
factor = 1
}
trait_type = assignable_terrain_trait
gui_row = 3
parent = {
traits = {
desert_fox
swamp_fox
trait_mountaineer
hill_fighter
jungle_rat
ranger
urban_assault_specialist
winter_specialist
}
num_parents_needed = 2
}
}
winter_expert = {
type = corps_commander
gain_xp = {
always = no # not gainable
}
modifier = {
acclimatization_cold_climate_gain_factor = 0.40
}
ai_will_do = {
factor = 1
}
any_parent = { winter_specialist }
trait_type = assignable_terrain_trait
gui_row = 7
}
trait_engineer = {
type = corps_commander
gain_xp = {
OR = {
has_combat_modifier = fort_attack
has_combat_modifier = river_crossing
}
}
cost = 700
modifier = {
river = {
attack = 0.05
}
fort = {
attack = 0.1
}
}
slot = high_command
specialist_advisor_trait = army_entrenchment_1
expert_advisor_trait = army_entrenchment_2
genius_advisor_trait = army_entrenchment_3
ai_will_do = {
factor = 1
}
gui_row = 4
}
panzer_leader = {
type = corps_commander
gain_xp = {
set_temp_variable = { temp = num_units }
multiply_temp_variable = { temp = 0.4 }
check_variable = { num_armored > temp }
}
custom_gain_xp_trigger_tooltip = armored_ratio_over_40
cost = 700
modifier = {
army_armor_speed_factor = 0.05
army_armor_attack_factor = 0.16
}
ai_will_do = {
factor = 1
}
attack_skill_factor = 2
gui_row = 1
slot = high_command
specialist_advisor_trait = army_armored_1
expert_advisor_trait = army_armored_2
genius_advisor_trait = army_armored_3
}
commando = {
type = corps_commander
gain_xp = {
OR = {
temperature < -15
temperature > 27
has_combat_modifier = paradrop
has_combat_modifier = amphibious_attack
}
}
cost = 700
modifier = {
out_of_supply_factor = -0.25
}
ai_will_do = {
factor = 1
}
gui_row = 10
slot = high_command
specialist_advisor_trait = army_commando_1
expert_advisor_trait = army_commando_2
genius_advisor_trait = army_commando_3
}
desert_fox = {
type = corps_commander
gain_xp = {
is_fighting_in_terrain = desert
}
cost = 700
modifier = {
desert = {
movement = 0.05
attack = 0.1
defence = 0.1
}
}
new_commander_weight = {
factor = 100
#modifier = {
# factor = 0
# FROM = { NOT = { has_idea = theatre_training_spirit } }
#}
}
ai_will_do = {
factor = 1
}
trait_type = basic_terrain_trait
gui_row = 0
}
swamp_fox = {
type = corps_commander
gain_xp = {
is_fighting_in_terrain = marsh
}
cost = 700
modifier = {
marsh = {
movement = 0.05
attack = 0.1
defence = 0.1
}
}
ai_will_do = {
factor = 1
}
trait_type = basic_terrain_trait
gui_row = 1
}
trait_mountaineer = {
type = corps_commander
gain_xp = {
is_fighting_in_terrain = mountain
}
cost = 700
modifier = {
mountain = {
movement = 0.05
attack = 0.1
defence = 0.1
}
}
ai_will_do = {
factor = 1
}
trait_type = basic_terrain_trait
gui_row = 3
}
hill_fighter = {
type = corps_commander
gain_xp = {
is_fighting_in_terrain = hills
}
cost = 700
modifier = {
hills = {
movement = 0.05
attack = 0.1
defence = 0.1
}
}
ai_will_do = {
factor = 1
}
trait_type = basic_terrain_trait
gui_row = 2
}
jungle_rat = {
type = corps_commander
gain_xp = {
is_fighting_in_terrain = jungle
}
cost = 700
modifier = {
jungle = {
movement = 0.05
attack = 0.1
defence = 0.1
}
}
ai_will_do = {
factor = 1
}
trait_type = basic_terrain_trait
gui_row = 6
}
ranger = {
type = corps_commander
gain_xp = {
is_fighting_in_terrain = forest
}
cost = 700
modifier = {
forest = {
movement = 0.05
attack = 0.1
defence = 0.1
}
}
ai_will_do = {
factor = 1
}
trait_type = basic_terrain_trait
gui_row = 5
}
urban_assault_specialist = {
type = corps_commander
gain_xp = {
is_fighting_in_terrain = urban
}
cost = 500
modifier = {
urban = {
movement = 0.05
attack = 0.1
defence = 0.1
}
}
ai_will_do = {
factor = 1
}
trait_type = basic_terrain_trait
gui_row = 4
}
naval_invader = {
type = corps_commander
gain_xp = {
is_amphibious_invasion = yes
}
cost = 100
modifier = {
amphibious_invasion = 0.3 # 30% faster invasions
invasion_preparation = -0.3
}
slot = high_command
specialist_advisor_trait = navy_amphibious_assault_1
expert_advisor_trait = navy_amphibious_assault_2
genius_advisor_trait = navy_amphibious_assault_3
ai_will_do = {
factor = 1
}
gui_row = 8
}
##################################
# Corps Commander assignable traits.
##################################
panzer_expert = {
type = corps_commander
gain_xp = {
always = no # not gainable
}
cost = 1000
modifier = {
army_armor_defence_factor = 0.10
}
custom_effect_tooltip = INCREASED_BLITZ_AND_ENCIRCLEMENT_CHANCE
ai_will_do = {
factor = 1
}
trait_type = assignable_trait
any_parent = { panzer_leader }
mutually_exclusive = combined_arms_expert
mutually_exclusive = cavalry_expert
gui_row = 1
}
combined_arms_expert = {
type = corps_commander
gain_xp = {
always = no # not gainable
}
cost = 500
modifier = {
motorized_defence_factor = 0.15
mechanized_defence_factor = 0.15
}
custom_effect_tooltip = INCREASED_BLITZ_AND_ENCIRCLEMENT_CHANCE
slot = high_command
specialist_advisor_trait = army_CombinedArms_1
expert_advisor_trait = army_CombinedArms_2
genius_advisor_trait = army_CombinedArms_3
ai_will_do = {
factor = 1
}
trait_type = assignable_trait
any_parent = { cavalry_leader panzer_leader }
mutually_exclusive = panzer_expert
mutually_exclusive = cavalry_expert
gui_row = 2
}
cavalry_expert = {
type = corps_commander
gain_xp = {
always = no # not gainable
}
cost = 500
modifier = {
#cavalry_attack_factor = 0.10
cavalry_defence_factor = 0.10
}
ai_will_do = {
factor = 1
}
trait_type = assignable_trait
any_parent = { cavalry_leader }
mutually_exclusive = panzer_expert
mutually_exclusive = combined_arms_expert
gui_row = 3
}
fortress_buster = {
type = corps_commander
gain_xp = {
OR = {
has_combat_modifier = fort_attack
dig_in > 10
}
}
cost = 700
modifier = {
fort = {
attack = 0.15
}
}
enable_ability = siege_artillery
slot = high_command
specialist_advisor_trait = army_artillery_1
expert_advisor_trait = army_artillery_2
genius_advisor_trait = army_artillery_3
ai_will_do = {
factor = 1
}
gui_row = 4
trait_type = assignable_trait
any_parent = { trait_engineer }
mutually_exclusive = scavenger
}
scavenger = {
type = corps_commander
gain_xp = {
always = no # not gainable
}
cost = 500
modifier = {
equipment_capture = 0.03
}
ai_will_do = {
factor = 1
}
trait_type = assignable_trait
gui_row = 5
any_parent = { trait_engineer }
mutually_exclusive = fortress_buster
}
infantry_expert = {
type = corps_commander
gain_xp = {
always = no # not gainable
}
cost = 500
modifier = {
army_infantry_attack_factor = 0.10
}
ai_will_do = {
factor = 1
}
mutually_exclusive = ambusher
trait_type = assignable_trait
any_parent = { infantry_leader }
gui_row = 6
}
ambusher = {
type = corps_commander
gain_xp = {
always = no # not gainable
}
cost = 500
modifier = {
max_dig_in = 5
recon_factor_while_entrenched = 0.25
}
ai_will_do = {
factor = 1
}
mutually_exclusive = infantry_expert
trait_type = assignable_trait
any_parent = { infantry_leader }
gui_row = 7
}
invader_ii = {
type = corps_commander
gain_xp = {
always = no # not gainable
}
cost = 500
modifier = {
extra_marine_supply_grace = 240
}
enable_ability = faster_naval_invasion_planning
ai_will_do = {
factor = 1
}
trait_type = assignable_trait
any_parent = { naval_invader }
gui_row = 8
}
naval_liason = {
type = corps_commander
gain_xp = {
always = no # not gainable
}
cost = 500
modifier = {
shore_bombardment_bonus = 0.25
}
ai_will_do = {
factor = 1
}
trait_type = assignable_trait
any_parent = { naval_invader }
gui_row = 9
}
skirmisher = {
type = corps_commander
gain_xp = {
always = no # not gainable
}
cost = 500
modifier = {
}
ai_will_do = {
factor = 1
}
enable_ability = probing_attack
trait_type = assignable_trait
any_parent = { commando }
gui_row = 10
}
paratrooper = {
type = corps_commander
gain_xp = {
always = no # not gainable
}
cost = 500
modifier = {
extra_paratrooper_supply_grace = 240
}
enable_ability = glider_planes
ai_will_do = {
factor = 1
}
trait_type = assignable_trait
any_parent = { commando }
gui_row = 11
}
camouflage_expert = {
type = corps_commander
gain_xp = {
always = no # not gainable
}
cost = 500
modifier = {
cas_damage_reduction = 0.5
air_superiority_bonus_in_combat = -0.5
}
ai_will_do = {
factor = 1
}
slot = high_command
specialist_advisor_trait = army_concealment_1
expert_advisor_trait = army_concealment_2
genius_advisor_trait = army_concealment_3
trait_type = assignable_trait
any_parent = { commando }
gui_row = 12
}
expert_improviser = {
type = corps_commander
gain_xp = {
always = no # not gainable
}
cost = 500
modifier = {
desert = {
movement = 0.1
}
hills = {
movement = 0.1
}
forest = {
movement = 0.1
}
mountain = {
movement = 0.1
}
plains = {
movement = 0.1
}
urban = {
movement = 0.1
}
jungle = {
movement = 0.1
}
marsh = {
movement = 0.1
}
}
override_effect_tooltip = expert_improviser_movement_bonus_on_land
ai_will_do = {
factor = 1
}
enable_ability = makeshift_bridges
trait_type = assignable_trait
any_parent = { trickster }
prerequisites = {
check_variable = { num_terrain_traits > 0 }
}
custom_prerequisite_tooltip = needs_at_least_one_terrain
gui_row = 13
}
guerilla_fighter = {
type = corps_commander
gain_xp = {
always = no # not gainable
}
cost = 500
modifier = {
dig_in_speed_factor = 0.5
}
ai_will_do = {
factor = 1
}
trait_type = assignable_trait
any_parent = { trickster }
gui_row = 14
}
##################################
# Naval traits.
##################################
seawolf = {
type = navy
gain_xp = {
submarine > 0.8 # at least 80% subs
}
cost = 700
modifier = {
navy_submarine_attack_factor = 0.2 # +X% stronger damage for submarines
}
custom_gain_xp_trigger_tooltip = SEAWOLF_TRIGGER_TT
slot = high_command
specialist_advisor_trait = navy_anti_submarine_1
expert_advisor_trait = navy_anti_submarine_2
genius_advisor_trait = navy_anti_submarine_3
ai_will_do = {
factor = 1
}
gui_row = 1
gui_column = 0
}
fleet_protector = {
type = navy
gain_xp = {
screen_ship > 0.5
#should gain XP when screening_ratio > 0.5
}
custom_gain_xp_trigger_tooltip = FLEET_PROTECTOR_TRIGGER_TT
cost = 500
modifier = {
screening_efficiency = 0.2
}
slot = high_command
specialist_advisor_trait = navy_screen_1
expert_advisor_trait = navy_screen_2
genius_advisor_trait = navy_screen_3
ai_will_do = {
factor = 1
}
gui_row = 3
gui_column = 0
}
blockade_runner = {
type = navy
cost = 500
gain_xp = {
#gains XP when running away
}
modifier = {
naval_retreat_chance = 0.2
naval_retreat_speed = 0.15
convoy_retreat_speed = 0.05
}
custom_gain_xp_trigger_tooltip = BLOCKADE_RUNNER_TRIGGER_TT
ai_will_do = {
factor = 1
}
gui_row = 7
gui_column = 0
}
superior_tactician = {
type = navy
gain_xp = {
is_winning = yes
}
cost = 500
modifier = {
positioning = 0.25
}
custom_gain_xp_trigger_tooltip = SUPERIOR_TACTICIAN_TRIGGER_TT
slot = navy_chief
specialist_advisor_trait = navy_chief_maneuver_1
expert_advisor_trait = navy_chief_maneuver_2
genius_advisor_trait = navy_chief_maneuver_3
ai_will_do = {
factor = 1
}
gui_row = 5
gui_column = 0
}
spotter = {
type = navy
gain_xp = { # This trigger is not needed as it gets xp from spotting (not by combat)
always = no
}
gain_xp_on_spotting = 10
cost = 500
modifier = {
spotting_chance = 0.1
}
custom_gain_xp_trigger_tooltip = SPOTTER_TRIGGER_TT
ai_will_do = {
factor = 1
}
gui_row = 8
gui_column = 0
}
fly_swatter = {
type = navy
gain_xp = {
is_fighting_air_units = yes
}
cost = 300
modifier = {
navy_anti_air_attack_factor = 0.1
}
custom_gain_xp_trigger_tooltip = FLY_SWATTER_TRIGGER_TT
slot = high_command
specialist_advisor_trait = navy_naval_air_defense_1
expert_advisor_trait = navy_naval_air_defense_2
genius_advisor_trait = navy_naval_air_defense_3
ai_will_do = {
factor = 1
}
gui_row = 4
gui_column = 0
}
ironside = {
type = navy
gain_xp = {
OR = {
capital_ship > 0.0
opponent = {
capital_ship > 0.0
}
}
}
custom_gain_xp_trigger_tooltip = IRONSIDE_TRIGGER_TT
cost = 500
modifier = {
navy_capital_ship_defence_factor = 0.1
}
ai_will_do = {
factor = 1
}
gui_row = 13
gui_column = 0
}
air_controller = {
type = navy
gain_xp = {
OR = {
has_carrier_airwings_on_mission = yes
has_carrier_airwings_in_own_combat = yes
}
}
cost = 500
modifier = {
navy_carrier_air_targetting_factor = 0.1 # Airplanes from carriers has better naval targetting
sortie_efficiency = 0.1
}
ai_will_do = {
factor = 1
}
gui_row = 10
gui_column = 0
}
##################################
# naval assignable traits
##################################
silent_hunter = {
type = navy
modifier = {
naval_torpedo_reveal_chance_factor = -0.15
}
ai_will_do = {
factor = 0
}
trait_type = assignable_trait
any_parent = { seawolf }
mutually_exclusive = lancer
gui_row = 1
gui_column = 1
}
torpedo_expert = {
type = navy
modifier = {
naval_torpedo_hit_chance_factor = 0.1
}
slot = high_command
specialist_advisor_trait = navy_submarine_1
expert_advisor_trait = navy_submarine_2
genius_advisor_trait = navy_submarine_3
ai_will_do = {
factor = 0
}
trait_type = assignable_trait
any_parent = { silent_hunter }
gui_row = 1
gui_column = 2
}
lancer = {
type = navy
modifier = {
naval_torpedo_screen_penetration_factor = 0.25
}
ai_will_do = {
factor = 0
}
trait_type = assignable_trait
any_parent = { seawolf fleet_protector }
mutually_exclusive = silent_hunter
gui_row = 2
gui_column = 1
}
destroyer_leader = {
type = navy
modifier = {
#destroyer = {
# units = {
# attack = 0.1
# defence = 0.1
# }
#}
}
sub_unit_modifiers = {
destroyer = {
naval_damage_factor = 0.1
naval_torpedo_hit_chance_factor = 0.1
navy_visibility = -0.1
}
}
ai_will_do = {
factor = 0
}
trait_type = assignable_trait
any_parent = { fleet_protector }
gui_row = 3
gui_column = 1
}
loading_drill_master = {
type = navy
modifier = {
naval_torpedo_cooldown_factor = -0.25
}
ai_will_do = {
factor = 0
}
trait_type = assignable_trait
any_parent = {
silent_hunter
lancer
destroyer_leader
}
gui_row = 2
gui_column = 2
}
hunter_killer = {
type = navy
modifier = {
navy_submarine_detection_factor = 0.2
navy_submarine_attack_factor = 0.1
}
ai_will_do = {
factor = 0
}
trait_type = assignable_trait
any_parent = { destroyer_leader }
gui_row = 3
gui_column = 2
}
cruiser_captain = {
type = navy
modifier = {
}
sub_unit_modifiers = {
light_cruiser = {
naval_damage_factor = 0.1
naval_speed_factor = 0.1
}
heavy_cruiser = {
naval_damage_factor = 0.1
naval_speed_factor = 0.1
}
}
ai_will_do = {
factor = 0
}
trait_type = assignable_trait
any_parent = { fly_swatter }
gui_row = 4
gui_column = 1
}
search_pattern_expert = {
type = navy
modifier = {
spotting_chance = 0.2
}
ai_will_do = {
factor = 0
}
trait_type = assignable_trait
any_parent = { cruiser_captain }
gui_row = 4
gui_column = 2
}
lone_wolf = {
type = navy
modifier = {
naval_enemy_fleet_size_ratio_penalty_factor = 0.1
}
ai_will_do = {
factor = 0
}
trait_type = assignable_trait
any_parent = { superior_tactician }
mutually_exclusive = concealment_expert
gui_row = 5
gui_column = 1
}
concealment_expert = {
type = navy
modifier = {
navy_visibility = -0.2
}
ai_will_do = {
factor = 0
}
slot = navy_chief
specialist_advisor_trait = navy_chief_commerce_raiding_1
expert_advisor_trait = navy_chief_commerce_raiding_2
genius_advisor_trait = navy_chief_commerce_raiding_3
trait_type = assignable_trait
any_parent = {
superior_tactician
spotter
blockade_runner
}
mutually_exclusive = lone_wolf
gui_row = 6
gui_column = 1
}
mine_sweeper = {
type = navy
modifier = {
mines_sweeping_by_fleets_factor = 0.25
naval_mines_effect_reduction = 0.25
}
ai_will_do = {
factor = 0
}
trait_type = assignable_trait
any_parent = {
spotter
blockade_runner
}
mutually_exclusive = mine_layer
gui_row = 7
gui_column = 1
}
mine_layer = {
type = navy
modifier = {
mines_planting_by_fleets_factor = 0.25
}
ai_will_do = {
factor = 0
}
trait_type = assignable_trait
any_parent = {
spotter
blockade_runner
}
mutually_exclusive = mine_sweeper
gui_row = 8
gui_column = 1
}
smoke_screen_expert = {
type = navy
modifier = {
naval_retreat_chance = 0.25
}
ai_will_do = {
factor = 0
}
trait_type = assignable_trait
any_parent = {
lone_wolf
concealment_expert
}
gui_row = 5
gui_column = 2
}
big_guns_expert = {
type = navy
modifier = {
navy_capital_ship_attack_factor = 0.15
}
slot = high_command
specialist_advisor_trait = navy_capital_ship_1
expert_advisor_trait = navy_capital_ship_2
genius_advisor_trait = navy_capital_ship_3
ai_will_do = {
factor = 0
}
trait_type = assignable_trait
any_parent = { ironside }
gui_row = 12
gui_column = 1
}
ground_pounder = {
type = navy
modifier = {
shore_bombardment_bonus = 0.25
}
ai_will_do = {
factor = 0
}
trait_type = assignable_trait
any_parent = { ironside }
gui_row = 14
gui_column = 1
}
safety_first = {
type = navy
modifier = {
critical_receive_chance = -0.25
}
slot = navy_chief
specialist_advisor_trait = navy_chief_reform_1
expert_advisor_trait = navy_chief_reform_2
genius_advisor_trait = navy_chief_reform_3
ai_will_do = {
factor = 0
}
trait_type = assignable_trait
any_parent = { ironside }
gui_row = 13
gui_column = 1
}
marksman = {
type = navy
modifier = {
naval_critical_score_chance_factor = 0.1
}
slot = navy_chief
specialist_advisor_trait = navy_chief_decisive_battle_1
expert_advisor_trait = navy_chief_decisive_battle_2
genius_advisor_trait = navy_chief_decisive_battle_3
ai_will_do = {
factor = 0
}
trait_type = assignable_trait
mutually_exclusive = crisis_magician
any_parent = { big_guns_expert }
gui_row = 12
gui_column = 2
}
crisis_magician = {
type = navy
modifier = {
naval_critical_effect_factor = -0.5
}
ai_will_do = {
factor = 0
}
trait_type = assignable_trait
mutually_exclusive = marksman
any_parent = { safety_first }
gui_row = 13
gui_column = 2
}
flight_deck_manager = {
type = navy
modifier = {
sortie_efficiency = 0.1
}
slot = high_command
specialist_advisor_trait = navy_carrier_1
expert_advisor_trait = navy_carrier_2
genius_advisor_trait = navy_carrier_3
ai_will_do = {
factor = 0
}
trait_type = assignable_trait
any_parent = { air_controller }
gui_row = 10
gui_column = 1
}
fighter_director = {
type = navy
modifier = {
fighter_sortie_efficiency = 0.2
}
ai_will_do = {
factor = 0
}
trait_type = assignable_trait
mutually_exclusive = dive_bomber
mutually_exclusive = torpedo_bomber
any_parent = { flight_deck_manager }
gui_row = 9
gui_column = 2
}
dive_bomber = {
type = navy
sub_unit_modifiers = {
cv_cas = {
air_attack_factor = 0.1
air_mission_efficiency = 0.1
}
}
ai_will_do = {
factor = 0
}
slot = navy_chief
specialist_advisor_trait = navy_chief_naval_aviation_1
expert_advisor_trait = navy_chief_naval_aviation_2
genius_advisor_trait = navy_chief_naval_aviation_3
trait_type = assignable_trait
mutually_exclusive = fighter_director
mutually_exclusive = torpedo_bomber
any_parent = { flight_deck_manager }
gui_row = 10
gui_column = 2
}
torpedo_bomber = {
type = navy
sub_unit_modifiers = {
cv_nav_bomber = {
air_attack_factor = 0.1
air_mission_efficiency = 0.1
}
}
slot = high_command
specialist_advisor_trait = air_naval_strike_1
expert_advisor_trait = air_naval_strike_2
genius_advisor_trait = air_naval_strike_3
ai_will_do = {
factor = 0
}
trait_type = assignable_trait
mutually_exclusive = fighter_director
mutually_exclusive = dive_bomber
any_parent = { flight_deck_manager }
gui_row = 11
gui_column = 2
}
##################################
# navy terrain trait
##################################
arctic_water_expert = {
type = navy
gain_xp = {
is_fighting_in_weather = arctic_water
}
cost = 1000
modifier = {
naval_attrition = -0.08
}
ai_will_do = {
factor = 0
}
trait_type = basic_terrain_trait
gui_row = 1
}
inshore_fighter = {
type = navy
gain_xp = {
is_fighting_in_terrain = water_fjords
}
cost = 1000
modifier = {
water_fjords = {
attack = 0.1
movement = 0.1
defence = 0.1
}
}
ai_will_do = {
factor = 0
}
trait_type = basic_terrain_trait
gui_row = 2
}
blue_water_expert = {
type = navy
gain_xp = {
is_fighting_in_terrain = water_deep_ocean
}
cost = 1000
modifier = {
water_deep_ocean = {
attack = 0.1
movement = 0.1
defence = 0.1
}
}
slot = high_command
specialist_advisor_trait = navy_fleet_logistics_1
expert_advisor_trait = navy_fleet_logistics_2
genius_advisor_trait = navy_fleet_logistics_3
ai_will_do = {
factor = 0
}
trait_type = basic_terrain_trait
gui_row = 3
}
green_water_expert = {
type = navy
gain_xp = {
is_fighting_in_terrain = water_shallow_sea
}
cost = 1000
modifier = {
water_shallow_sea = {
attack = 0.1
movement = 0.1
defence = 0.1
}
}
ai_will_do = {
factor = 0
}
trait_type = basic_terrain_trait
gui_row = 4
}
# # ## # # ## # ### ### ### ## ## # # ## # ### ### # # ### ### ## ### ### ##
## # # # # # # # # # # # # # # # # ## # # # # # # # # # # # # # # # #
# ## #### # # #### # ### ## ### # # # # ## #### # # # # # ### #### # # #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# # # # # # # ### # ### # # ## ## # # # # ### ### # # # # # # # ### # ##
old_guard_navy = {
type = navy
trait_type = personality_trait
modifier = {
experience_gain_factor = -0.25
}
new_commander_weight = {
factor = 1
modifier = {
FROM = { has_idea = best_of_the_best_naval_academy_spirit }
factor = 0
}
modifier = {
FROM = { has_idea = naval_academy_scholarships_spirit }
factor = 0
}
modifier = { #Purged Junior Navy Officers
FROM = { has_idea = SOV_purged_junior_navy_officers_3 }
factor = 0
}
}
ai_will_do = {
factor = 1
}
}
gentlemanly = {
type = navy
trait_type = personality_trait
modifier = {
naval_enemy_retreat_chance = 0.2
navy_org = 5
}
new_commander_weight = {
factor = 1
modifier = {
FROM = { has_idea = best_of_the_best_naval_academy_spirit }
factor = 0
}
modifier = {
FROM = { has_idea = naval_academy_scholarships_spirit }
factor = 0
}
modifier = { #Purged Junior Navy Officers
FROM = { has_idea = SOV_purged_junior_navy_officers_3 }
factor = 0
}
}
ai_will_do = {
factor = 1
}
}
gunnery_expert = {
type = navy
trait_type = personality_trait
modifier = {
}
trait_xp_factor = {
ironside = 0.5 #+100%
}
new_commander_weight = {
factor = 1
modifier = {
FROM = { has_idea = best_of_the_best_naval_academy_spirit }
factor = 0
}
modifier = {
FROM = { has_idea = naval_academy_scholarships_spirit }
factor = 0
}
modifier = { #Purged Junior Navy Officers
FROM = { has_idea = SOV_purged_junior_navy_officers_3 }
factor = 0
}
}
ai_will_do = {
factor = 1
}
}
cuts_corners = {
type = navy
trait_type = personality_trait
modifier = {
naval_damage_factor = 0.2
naval_defense_factor = -0.1
}
new_commander_weight = {
factor = 1
modifier = {
FROM = { has_idea = best_of_the_best_naval_academy_spirit }
factor = 0
}
modifier = {
FROM = { has_idea = naval_academy_scholarships_spirit }
factor = 0
}
modifier = { #Purged Junior Navy Officers
FROM = { has_idea = SOV_purged_junior_navy_officers_3 }
factor = 0
}
}
ai_will_do = {
factor = 1
}
}
chief_engineer = {
type = navy
trait_type = personality_trait
modifier = {
critical_receive_chance = -0.05
}
new_commander_weight = {
factor = 1
modifier = {
FROM = { has_idea = best_of_the_best_naval_academy_spirit }
factor = 0
}
modifier = {
FROM = { has_idea = naval_academy_scholarships_spirit }
factor = 0
}
modifier = { #Purged Junior Navy Officers
FROM = { has_idea = SOV_purged_junior_navy_officers_3 }
factor = 0
}
}
ai_will_do = {
factor = 1
}
}
navy_media_personality = {
type = navy
trait_type = personality_trait
modifier = {
naval_has_potf_in_combat_attack = 0.1
naval_has_potf_in_combat_defense = 0.1
}
new_commander_weight = {
factor = 1
modifier = {
FROM = { has_idea = best_of_the_best_naval_academy_spirit }
factor = 0
}
modifier = {
FROM = { has_idea = naval_academy_scholarships_spirit }
factor = 0
}
modifier = { #Purged Junior Navy Officers
FROM = { has_idea = SOV_purged_junior_navy_officers_3 }
factor = 0
}
}
ai_will_do = {
factor = 1
}
}
bold = {
type = navy
trait_type = personality_trait
modifier = { # WARNING! Changing the value of these modifiers requires changing them also in the tooltip ITA_flotta_d_evasione_admiral_traits_tt
naval_damage_factor = 0.05
naval_speed_factor = 0.1
}
new_commander_weight = {
factor = 1
modifier = {
FROM = { has_idea = best_of_the_best_naval_academy_spirit }
factor = 0
}
modifier = {
FROM = { has_idea = naval_academy_scholarships_spirit }
factor = 0
}
modifier = { #Purged Junior Navy Officers
FROM = { has_idea = SOV_purged_junior_navy_officers_3 }
factor = 0
}
}
ai_will_do = {
factor = 1
}
}
navy_career_officer = {
type = navy
trait_type = personality_trait
modifier = {
experience_gain_factor = 0.1
}
new_commander_weight = {
factor = 1
modifier = {
FROM = { has_idea = best_of_the_best_naval_academy_spirit }
factor = 0
}
modifier = {
FROM = { has_idea = naval_academy_scholarships_spirit }
factor = 0
}
modifier = { #Purged Junior Navy Officers
FROM = { has_idea = SOV_purged_junior_navy_officers_3 }
factor = 0
}
}
ai_will_do = {
factor = 1
}
}
battleship_adherent = {
type = navy
trait_type = personality_trait
modifier = {
navy_capital_ship_attack_factor = 0.1
navy_anti_air_attack_factor = -0.2
}
new_commander_weight = {
factor = 1
modifier = {
FROM = { has_idea = best_of_the_best_naval_academy_spirit }
factor = 0
}
modifier = {
FROM = { has_idea = naval_academy_scholarships_spirit }
factor = 0
}
modifier = { #Purged Junior Navy Officers
FROM = { has_idea = SOV_purged_junior_navy_officers_3 }
factor = 0
}
}
ai_will_do = {
factor = 1
}
}
aviation_enthusiast = {
type = navy
trait_type = personality_trait
modifier = {
}
trait_xp_factor = {
air_controller = 0.5 #+100%
}
new_commander_weight = {
factor = 1
modifier = {
FROM = { has_idea = best_of_the_best_naval_academy_spirit }
factor = 0
}
modifier = {
FROM = { has_idea = naval_academy_scholarships_spirit }
factor = 0
}
modifier = { #Purged Junior Navy Officers
FROM = { has_idea = SOV_purged_junior_navy_officers_3 }
factor = 0
}
}
ai_will_do = {
factor = 1
}
}
caustic_personality = {
type = navy
trait_type = personality_trait
modifier = {
ships_at_battle_start = -0.25
}
new_commander_weight = {
factor = 1
modifier = {
FROM = { has_idea = best_of_the_best_naval_academy_spirit }
factor = 0
}
modifier = {
FROM = { has_idea = naval_academy_scholarships_spirit }
factor = 0
}
modifier = { #Purged Junior Navy Officers
FROM = { has_idea = SOV_purged_junior_navy_officers_3 }
factor = 0
}
}
ai_will_do = {
factor = 1
}
}
craven = {
type = navy
trait_type = personality_trait
modifier = {
naval_retreat_chance = 0.25
naval_damage_factor = -0.05
}
new_commander_weight = {
factor = 1
modifier = {
FROM = { has_idea = best_of_the_best_naval_academy_spirit }
factor = 0
}
modifier = {
FROM = { has_idea = naval_academy_scholarships_spirit }
factor = 0
}
modifier = { #Purged Junior Navy Officers
FROM = { has_idea = SOV_purged_junior_navy_officers_3 }
factor = 0
}
}
ai_will_do = {
factor = 1
}
}
naval_lineage = {
type = navy
trait_type = personality_trait
modifier = {
naval_retreat_chance = -0.25
ships_at_battle_start = 0.25
}
new_commander_weight = {
factor = 1
modifier = {
FROM = { has_idea = best_of_the_best_naval_academy_spirit }
factor = 0
}
modifier = {
FROM = { has_idea = naval_academy_scholarships_spirit }
factor = 0
}
modifier = { #Purged Junior Navy Officers
FROM = { has_idea = SOV_purged_junior_navy_officers_3 }
factor = 0
}
}
ai_will_do = {
factor = 1
}
}
##################################
# status traits
##################################
sick = {
type = all
trait_type = status_trait
non_shared_modifier = {
skill_bonus_factor = -0.5
cannot_use_abilities = 1
}
}
wounded = {
type = all
trait_type = status_trait
non_shared_modifier = {
skill_bonus_factor = -0.5
cannot_use_abilities = 1
}
}
reassigned = {
type = all
trait_type = status_trait
non_shared_modifier = {
skill_bonus_factor = -1
cannot_use_abilities = 1
}
}
disgruntled = {
type = all
trait_type = status_trait
attack_skill = -2
defense_skill = -2
logistics_skill = -2
planning_skill = -2
}
demoted = {
type = all
trait_type = status_trait
attack_skill = -1
defense_skill = -1
logistics_skill = -1
planning_skill = -1
}
substance_abuser = {
type = all
trait_type = status_trait
}
substance_addict = {
type = all
trait_type = status_trait
allowed = {
has_trait = substance_abuser
}
attack_skill = -2
defense_skill = -2
logistics_skill = -2
planning_skill = -2
}
hidden_sympathies = {
type = all
trait_type = status_trait
}
recently_promoted = {
type = all
trait_type = status_trait
attack_skill = -1
defense_skill = -1
logistics_skill = -1
planning_skill = -1
}
# defective_geneseed = { #needs more code support, remove before launch
# type = all
# trait_type = status_trait
# gain_xp = {
# OR = {
# has_division_template_spacemarine = yes
# has_chaos_corruption = yes
# }
# }
# cost = 400
# modifier = {
# geneseed_defect_factor = 1
# }
# }
##################################
# Special trait for exiled leaders
##################################
exiled_leader = {
type = land
trait_type = exile
gain_xp = {
always = no # not gainable
}
modifier = {
exiled_divisions_attack_factor = 0.1
own_exiled_divisions_attack_factor = 0.05
exiled_divisions_defense_factor = 0.1
own_exiled_divisions_defense_factor = 0.05
}
ai_will_do = {
factor = 1
}
new_commander_weight = {
factor = 0
}
}
trait_SPA_nationalist_sympathies = {
type = all
trait_type = personality_trait
new_commander_weight = {
factor = 0
}
}
trait_SPA_falangist_loyalties = {
type = all
trait_type = personality_trait
new_commander_weight = {
factor = 0
}
}
trait_SPA_carlist_loyalties = {
type = all
trait_type = personality_trait
new_commander_weight = {
factor = 0
}
}
trait_SPR_republican_loyalties = {
type = all
trait_type = personality_trait
new_commander_weight = {
factor = 0
}
}
trait_SPR_stalinist_loyalties = {
type = all
trait_type = personality_trait
new_commander_weight = {
factor = 0
}
}
trait_SPR_anti_stalinist_loyalties = {
type = all
trait_type = personality_trait
new_commander_weight = {
factor = 0
}
}
trait_BUL_zveno_member = {
type = all
trait_type = personality_trait
allowed = {
FROM = { original_tag = BUL }
}
new_commander_weight = {
factor = 1
modifier = {
factor = 0
FROM = { has_country_flag = BUL_zveno_destroyed_flag }
}
}
}
trait_BUL_tsar_loyalist = {
type = all
trait_type = personality_trait
allowed = {
FROM = { original_tag = BUL }
}
new_commander_weight = {
factor = 1
modifier = {
factor = 0
FROM = {
OR = {
neutrality < 0.05
has_completed_focus = BUL_overthrow_the_tsar
has_completed_focus = BUL_abolish_the_monarchy
has_completed_focus = BUL_depose_the_tsar
AND = {
has_completed_focus = BUL_plot_against_boris
NOT = { has_completed_focus = BUL_the_return_of_ferdinand_i }
}
}
}
}
}
}
trait_BUL_ff_sympathizer = {
type = all
trait_type = personality_trait
allowed = {
FROM = { original_tag = BUL }
}
new_commander_weight = {
factor = 1
modifier = {
factor = 0
OR = {
FROM = { communism < 0.05 }
FROM = { has_completed_focus = BUL_crush_the_communists }
}
}
}
}
trait_TUR_kemalist_champion = {
type = all
trait_type = personality_trait
allowed = {
FROM = { original_tag = TUR }
}
new_commander_weight = {
factor = 0
}
}
trait_GRE_stauch_monarchist = {
type = all
trait_type = personality_trait
allowed = {
FROM = { original_tag = GRE }
}
new_commander_weight = {
factor = 0
}
}
trait_GRE_venezelist_loyalist = {
type = all
trait_type = personality_trait
allowed = {
FROM = { original_tag = GRE }
}
new_commander_weight = {
factor = 0
}
}
trait_GRE_marxist_acolyte = {
type = all
trait_type = personality_trait
allowed = {
FROM = { original_tag = GRE }
}
new_commander_weight = {
factor = 0
}
}
trait_GRE_fascist_sympathizer = {
type = all
trait_type = personality_trait
allowed = {
FROM = { original_tag = GRE }
}
new_commander_weight = {
factor = 0
}
}
##################################
# operative traits
##################################
operative_commando = {
type = operative
trait_type = basic_trait
new_commander_weight = {
base = 1
modifier = {
set_temp_variable = {
trait_chance = FROM.modifier@commando_trait_chance_factor
}
add_to_temp_variable = {
var = trait_chance
value = 1
}
factor = trait_chance
}
modifier = {
factor = 0.2
FROM = {
NOT = { has_done_agency_upgrade = upgrade_commando_training }
}
}
}
cost = 600
gain_xp_leader = {
ROOT = {
has_done_agency_upgrade = upgrade_commando_training
}
}
modifier = {
own_operative_detection_chance_factor = -0.1
target_sabotage_factor = 0.25
target_sabotage_risk = -0.25
operation_capture_cipher_outcome = 0.25
operation_capture_cipher_risk = -0.25
}
}
operative_seducer = {
type = operative
trait_type = personality_trait
#new_commander_weight = {
#}
modifier = {
operation_infiltrate_outcome = 0.25
operation_infiltrate_risk = -0.25
own_operative_detection_chance_factor = -0.2
}
}
operative_infiltrator = {
type = operative
trait_type = basic_trait
new_commander_weight = {
factor = 0.5
}
cost = 400
gain_xp_leader = {
OR = {
operative_leader_operation = operation_rescue_operative
operative_leader_operation = operation_infiltrate_civilian
operative_leader_operation = operation_infiltrate_armed_forces_army
operative_leader_operation = operation_infiltrate_armed_forces_navy
operative_leader_operation = operation_infiltrate_armed_forces_airforce
operative_leader_operation = operation_make_resistance_contacts
}
}
modifier = {
operation_infiltrate_outcome = 0.25
operation_infiltrate_risk = -0.25
}
}
operative_master_interrogator = {
type = operative
trait_type = basic_trait
#new_commander_weight = {
#}
cost = 400
gain_xp_leader = {
OR = {
operative_leader_mission = root_out_resistance
operative_leader_mission = counter_intelligence
}
}
modifier = {
intelligence_agency_defense = 0.2
}
}
operative_linguist = {
type = operative
trait_type = basic_trait
#new_commander_weight = {
#}
cost = 400
gain_xp_leader = {
NOT = { operative_leader_mission = no_mission }
NOT = { has_nationality = FROM }
}
modifier = {
# something good
}
}
operative_double_agent = {
type = operative
trait_type = personality_trait
new_commander_weight = {
factor = 0 # only from events
}
modifier = {
# something good
}
}
operative_tough = {
type = operative
trait_type = personality_trait
#new_commander_weight = {
#}
modifier = {
enemy_operative_intel_extraction_rate = -0.5
}
}
operative_safe_cracker = {
type = operative
trait_type = personality_trait
new_commander_weight = {
factor = 0.5
}
modifier = {
operation_capture_cipher_outcome = 0.25
operation_steal_tech_risk = -0.25
operation_steal_tech_outcome = 0.25
}
}
operative_well_groomed = {
type = operative
trait_type = basic_trait
#new_commander_weight = {
#}
cost = 400
gain_xp_leader = {
OR = {
operative_leader_mission = diplomatic_pressure
operative_leader_mission = control_trade
}
}
modifier = {
control_trade_mission_factor = 0.2
diplomatic_pressure_mission_factor = 0.2
}
}
operative_natural_orator = {
type = operative
trait_type = basic_trait
gain_xp_leader = {
OR = {
operative_leader_mission = propaganda
operative_leader_mission = boost_ideology
}
}
cost = 400
modifier = {
operation_coup_government_risk = -0.25
operation_coup_government_cost = -0.25
boost_ideology_mission_factor = 0.2
}
}
operative_escape_artist = {
type = operative
trait_type = basic_trait
#gained through script when successfully executing an escape operation
modifier = {
operation_rescue_operative_risk = -0.1
operation_rescue_operative_cost = -0.1
}
}
operative_demolition_expert = {
type = operative
trait_type = basic_trait
cost = 400
gain_xp_leader = {
OR = {
operative_leader_operation = operation_targeted_sabotage_industry
operative_leader_operation = operation_targeted_sabotage_infrastructure
operative_leader_operation = operation_targeted_sabotage_resources
}
}
modifier = {
target_sabotage_factor = 0.25
target_sabotage_cost = -0.25
boost_resistance_factor = 0.25
}
}
promoted_from_the_ranks = {
type = land
trait_type = personality_trait
modifier = {
promote_cost_factor = 0.5
planning_speed = 0.1
recon_factor = 0.05
}
new_commander_weight = {
factor = 0
}
}
}