###TRIGGER LIST # councillor_loyalty_trigger #Spouse councillor: # #TRIGGERS can_be_councillor_basics_trigger = { is_available_quick = { adult = yes incapable = no imprisoned = no } is_at_war_with_liege = no trigger_if = { limit = { has_variable = block_hire_councillor } NOT = { var:block_hire_councillor = liege } } } can_be_chancellor_trigger = { can_be_councillor_basics_trigger = yes $COURT_OWNER$ ?= { NOT = { government_has_flag = government_is_nomadic } } NAND = { has_council_position = councillor_court_chaplain faith = { has_doctrine_parameter = clerical_appointment_fixed } } NOR = { has_council_position = councillor_spouse AND = { this = liege.diarch liege = { has_diarchy_active_parameter = diarchy_is_vizierate } } } OR = { is_ruler = yes AND = { is_female = yes $COURT_OWNER$.faith = { NOT = { has_doctrine_parameter = male_dominated_council } } } AND = { is_male = yes $COURT_OWNER$.faith = { NOT = { has_doctrine_parameter = female_dominated_council } } } } } can_be_steward_trigger = { can_be_councillor_basics_trigger = yes $COURT_OWNER$ ?= { NOT = { government_has_flag = government_is_nomadic } } NAND = { has_council_position = councillor_court_chaplain faith = { has_doctrine_parameter = clerical_appointment_fixed } } NOR = { has_council_position = councillor_spouse AND = { this = liege.diarch liege = { has_diarchy_active_parameter = diarchy_is_vizierate } } } OR = { is_ruler = yes AND = { is_female = yes $COURT_OWNER$.faith = { NOT = { has_doctrine_parameter = male_dominated_council } } } AND = { is_male = yes $COURT_OWNER$.faith = { NOT = { has_doctrine_parameter = female_dominated_council } } } } } can_be_marshal_trigger = { can_be_councillor_basics_trigger = yes $COURT_OWNER$ ?= { NOT = { government_has_flag = government_is_nomadic } } is_hostage = no NAND = { has_council_position = councillor_court_chaplain faith = { has_doctrine_parameter = clerical_appointment_fixed } } NOR = { has_council_position = councillor_spouse AND = { this = liege.diarch liege = { has_diarchy_active_parameter = diarchy_is_vizierate } } } OR = { is_ruler = yes AND = { is_female = yes $COURT_OWNER$.faith = { NOT = { has_doctrine_parameter = male_dominated_council } } } AND = { is_male = yes $COURT_OWNER$.faith = { NOT = { has_doctrine_parameter = female_dominated_council } } } AND = { has_trait = shieldmaiden $COURT_OWNER$.culture = { has_cultural_parameter = has_access_to_shieldmaidens } } } } can_be_spymaster_trigger = { can_be_councillor_basics_trigger = yes NAND = { has_council_position = councillor_court_chaplain faith = { has_doctrine_parameter = clerical_appointment_fixed } } NOR = { has_council_position = councillor_spouse AND = { this = liege.diarch liege = { has_diarchy_active_parameter = diarchy_is_vizierate } } } exists = $COURT_OWNER$ #so we can have the argument but get no errors } can_be_court_chaplain_trigger = { save_temporary_scope_as = court_chaplain_check can_be_councillor_basics_trigger = yes $COURT_OWNER$ ?= { NOT = { government_has_flag = government_is_nomadic } } NOR = { has_council_position = councillor_spouse AND = { this = liege.diarch liege = { has_diarchy_active_parameter = diarchy_is_vizierate } } } $COURT_OWNER$.faith = { has_allowed_gender_for_clergy = scope:court_chaplain_check } faith = $COURT_OWNER$.faith trigger_if = { limit = { faith = { has_doctrine = doctrine_theocracy_temporal } } OR = { is_ruler = no government_has_flag = government_is_theocracy } } trigger_if = { limit = { exists = var:escaped_imprisonment_from } NOT = { var:escaped_imprisonment_from = $COURT_OWNER$ } } trigger_if = { # An excommunicated ruler tolerate excommunicated bishops limit = { $COURT_OWNER$ ?= { NOT = { has_trait = excommunicated } } } NOT = { has_trait = excommunicated } } } can_be_spouse_councillor_trigger = { save_temporary_scope_as = spouse_councillor_check can_be_councillor_basics_trigger = yes #NOT = { # We allow spouses to both be regents and do their spouse job # this = liege.diarch #} trigger_if = { limit = { is_ruler = yes } liege ?= $COUNCIL_OWNER$ $COUNCIL_OWNER$ = { primary_spouse = scope:spouse_councillor_check } } trigger_else = { $COUNCIL_OWNER$ ?= { primary_spouse = scope:spouse_councillor_check } } } can_be_kurultai_trigger = { can_be_councillor_basics_trigger = yes exists = $COURT_OWNER$ NOT = { government_has_flag = government_is_herder } NOR = { has_council_position = councillor_spouse has_court_position = court_astrologer_court_position AND = { this = $COURT_OWNER$.diarch $COURT_OWNER$ ?= { has_diarchy_active_parameter = diarchy_is_vizierate } } } NOR = { has_council_position = $CP1$ has_council_position = $CP2$ has_council_position = $CP3$ } OR = { is_landed = yes is_knight_of = $COURT_OWNER$ is_courtier_of = $COURT_OWNER$ is_ruler = yes is_powerful_vassal = yes } OR = { is_ruler = yes AND = { is_female = yes $COURT_OWNER$.faith = { NOT = { has_doctrine_parameter = male_dominated_council } } } AND = { is_male = yes $COURT_OWNER$.faith = { NOT = { has_doctrine_parameter = female_dominated_council } } } AND = { has_trait = shieldmaiden $COURT_OWNER$.culture = { has_cultural_parameter = has_access_to_shieldmaidens } } } } can_be_any_kurultai_trigger = { can_be_councillor_basics_trigger = yes $COURT_OWNER$ ?= { OR = { has_council_position = councillor_kurultai_1 has_council_position = councillor_kurultai_2 has_council_position = councillor_kurultai_3 has_council_position = councillor_kurultai_4 } } NOR = { has_council_position = councillor_spouse AND = { this = $COURT_OWNER$.diarch $COURT_OWNER$ ?= { has_diarchy_active_parameter = diarchy_is_vizierate } } } NOR = { has_council_position = councillor_kurultai_1 has_council_position = councillor_kurultai_2 has_council_position = councillor_kurultai_3 has_council_position = councillor_kurultai_4 } OR = { is_landed = yes is_knight_of = $COURT_OWNER$ is_courtier_of = $COURT_OWNER$ is_ruler = yes is_powerful_vassal = yes } OR = { is_ruler = yes AND = { is_female = yes $COURT_OWNER$.faith = { NOT = { has_doctrine_parameter = male_dominated_council } } } AND = { is_male = yes $COURT_OWNER$.faith = { NOT = { has_doctrine_parameter = female_dominated_council } } } AND = { has_trait = shieldmaiden $COURT_OWNER$.culture = { has_cultural_parameter = has_access_to_shieldmaidens } } } } is_kurultai_trigger = { OR = { has_council_position = councillor_kurultai_1 has_council_position = councillor_kurultai_2 has_council_position = councillor_kurultai_3 has_council_position = councillor_kurultai_4 } } has_any_kurultai_trigger = { OR = { exists = cp:councillor_kurultai_1 exists = cp:councillor_kurultai_2 exists = cp:councillor_kurultai_3 exists = cp:councillor_kurultai_4 } } councillor_loyalty_trigger = { weighted_calc_true_if = { amount >= 50 20 = { NOT = { has_trait = ambitious } } 20 = { opinion = { target = liege value > 0 } } 20 = { opinion = { target = liege value > 20 } } 20 = { opinion = { target = liege value > 40 } } 20 = { opinion = { target = liege value > 60 } } } } ############################ #SPOUSE COUNCILLOR TRIGGERS# ############################ valid_spouse_councillor_trigger = { scope:councillor = { is_available = yes } cp:councillor_spouse ?= scope:councillor } is_blocked_from_being_fired_from_council_trigger = { custom_description = { text = "is_blocked_from_being_fired_from_council" subject = this object = $COURT_OWNER$ OR = { # Check in code if the court owner is prevented from firing the councilor # can_fire_position must take a council task as input, but checks the councilor behind the task. AND = { exists = this.council_task this.council_task = { can_fire_position = no } } # Check for variable preventing the firing of a councilor set by script AND = { has_variable = block_fire_councillor var:block_fire_councillor = $COURT_OWNER$ } } } } can_be_fired_from_council_trigger = { NOT = { is_blocked_from_being_fired_from_council_trigger = { COURT_OWNER = $COURT_OWNER$ } } trigger_if = { limit = { has_council_position = councillor_court_chaplain } faith = { OR = { has_doctrine = doctrine_clerical_succession_temporal_appointment has_doctrine = doctrine_clerical_succession_spiritual_appointment } } } } #Faith/culture triggers same_faith_or_culture_as_councillor_trigger = { OR = { culture = scope:councillor.culture faith = scope:councillor.faith } } different_faith_and_or_culture_from_councillor_trigger = { OR = { culture != scope:councillor.culture faith != scope:councillor.faith } } character_same_faith_as_councillor_but_different_from_root_trigger = { faith = scope:councillor.faith faith != root.faith } character_same_culture_as_councillor_but_different_from_root_trigger = { culture = scope:councillor.culture culture != root.culture } character_same_faith_or_culture_as_councillor_but_different_from_root_trigger = { OR = { character_same_faith_as_councillor_but_different_from_root_trigger = yes character_same_culture_as_councillor_but_different_from_root_trigger = yes } } character_different_culture_than_councillor_and_root_trigger = { NOR = { culture = scope:councillor.culture culture = root.culture } } character_different_faith_than_councillor_and_root_trigger = { NOR = { faith = scope:councillor.faith faith = root.faith } } character_different_faith_or_culture_than_councillor_and_root_trigger = { OR = { character_different_culture_than_councillor_and_root_trigger = yes character_different_faith_than_councillor_and_root_trigger = yes } } province_same_faith_or_culture_as_councillor_but_different_from_root_trigger = { OR = { AND = { culture = scope:councillor.culture culture != root.culture } AND = { faith = scope:councillor.faith faith != root.faith } } } #End of faith/culture triggers #Councillor Spouse threshold triggers #Intrigue spouse_intrigue_tier_1_trigger = { scope:councillor = { OR = { has_character_modifier = councillor_spouse_intrigue_2_modifier has_character_modifier = councillor_spouse_intrigue_1_modifier has_trait = schemer intrigue >= spouse_skill_rating_1 is_performing_council_task = task_court_intrigue } } } spouse_intrigue_tier_2_trigger = { scope:councillor = { opinion = { target = liege value > 30 } OR = { has_character_modifier = councillor_spouse_intrigue_2_modifier has_trait = schemer intrigue >= spouse_skill_rating_3 AND = { is_performing_council_task = task_court_intrigue OR = { intrigue >= spouse_skill_rating_2 has_character_modifier = councillor_spouse_intrigue_2_modifier has_character_modifier = councillor_spouse_intrigue_1_modifier has_trait = schemer } } } } } spouse_intrigue_tier_3_trigger = { scope:councillor = { opinion = { target = liege value > 50 } OR = { has_trait = schemer intrigue >= spouse_skill_rating_4 AND = { is_performing_council_task = task_court_intrigue OR = { intrigue >= high_skill_rating has_character_modifier = councillor_spouse_intrigue_2_modifier has_trait = schemer } } } } } #Diplomacy spouse_diplomacy_tier_1_trigger = { scope:councillor = { OR = { has_character_modifier = councillor_spouse_diplomacy_2_modifier has_character_modifier = councillor_spouse_diplomacy_1_modifier has_trait = diplomat diplomacy >= spouse_skill_rating_1 is_performing_council_task = task_court_politics } } } spouse_diplomacy_tier_2_trigger = { scope:councillor = { opinion = { target = liege value > 30 } OR = { has_character_modifier = councillor_spouse_diplomacy_2_modifier has_trait = diplomat diplomacy >= spouse_skill_rating_3 AND = { is_performing_council_task = task_court_politics OR = { diplomacy >= spouse_skill_rating_2 has_character_modifier = councillor_spouse_diplomacy_2_modifier has_character_modifier = councillor_spouse_diplomacy_1_modifier has_trait = diplomat } } } } } spouse_diplomacy_tier_3_trigger = { scope:councillor = { opinion = { target = liege value > 50 } OR = { has_trait = diplomat diplomacy >= spouse_skill_rating_4 AND = { is_performing_council_task = task_court_politics OR = { diplomacy >= spouse_skill_rating_2 has_trait = diplomat has_character_modifier = councillor_spouse_diplomacy_2_modifier } } } } } #Martial spouse_martial_tier_1_trigger = { scope:councillor = { OR = { has_character_modifier = councillor_spouse_martial_2_modifier has_character_modifier = councillor_spouse_martial_1_modifier has_trait = strategist martial >= spouse_skill_rating_1 is_performing_council_task = task_chivalry } } } spouse_martial_tier_2_trigger = { scope:councillor = { opinion = { target = liege value > 30 } OR = { has_character_modifier = councillor_spouse_martial_2_modifier has_trait = strategist martial >= spouse_skill_rating_3 AND = { is_performing_council_task = task_chivalry OR = { martial >= spouse_skill_rating_2 has_character_modifier = councillor_spouse_martial_2_modifier has_character_modifier = councillor_spouse_martial_1_modifier has_trait = strategist } } } } } spouse_martial_tier_3_trigger = { scope:councillor = { opinion = { target = liege value > 50 } OR = { has_trait = strategist martial >= spouse_skill_rating_4 AND = { is_performing_council_task = task_chivalry OR = { martial >= spouse_skill_rating_2 has_character_modifier = councillor_spouse_martial_2_modifier has_trait = strategist } } } } } #Stewardship spouse_stewardship_tier_1_trigger = { scope:councillor = { OR = { has_character_modifier = councillor_spouse_stewardship_2_modifier has_character_modifier = councillor_spouse_stewardship_1_modifier has_trait = architect stewardship >= spouse_skill_rating_1 is_performing_council_task = task_manage_domain } } } spouse_stewardship_tier_2_trigger = { scope:councillor = { opinion = { target = liege value > 30 } OR = { has_character_modifier = councillor_spouse_stewardship_2_modifier has_trait = architect stewardship >= spouse_skill_rating_3 AND = { is_performing_council_task = task_manage_domain OR = { stewardship >= spouse_skill_rating_2 has_character_modifier = councillor_spouse_stewardship_2_modifier has_character_modifier = councillor_spouse_stewardship_1_modifier has_trait = architect } } } } } spouse_stewardship_tier_3_trigger = { scope:councillor = { opinion = { target = liege value > 50 } OR = { has_trait = architect stewardship >= spouse_skill_rating_4 AND = { is_performing_council_task = task_manage_domain OR = { stewardship >= spouse_skill_rating_2 has_character_modifier = councillor_spouse_stewardship_2_modifier has_trait = architect } } } } } #Learning spouse_learning_tier_1_trigger = { scope:councillor = { OR = { has_character_modifier = councillor_spouse_learning_2_modifier has_character_modifier = councillor_spouse_learning_1_modifier has_trait = scholar learning >= spouse_skill_rating_1 is_performing_council_task = task_patronage } } } spouse_learning_tier_2_trigger = { scope:councillor = { opinion = { target = liege value > 30 } OR = { has_character_modifier = councillor_spouse_learning_2_modifier has_trait = scholar learning >= spouse_skill_rating_3 AND = { is_performing_council_task = task_patronage OR = { learning >= spouse_skill_rating_2 has_character_modifier = councillor_spouse_learning_2_modifier has_character_modifier = councillor_spouse_learning_1_modifier has_trait = scholar } } } } } spouse_learning_tier_3_trigger = { scope:councillor = { opinion = { target = liege value > 50 } OR = { has_trait = scholar learning >= spouse_skill_rating_4 AND = { is_performing_council_task = task_patronage OR = { learning >= spouse_skill_rating_2 has_character_modifier = councillor_spouse_learning_2_modifier has_trait = scholar } } } } } # Court Espionage task triggers spymaster_task_find_secrets_interesting_secret_type_trigger = { save_temporary_scope_as = suitable_secret trigger_if = { limit = { secret_type = secret_disputed_heritage exists = secret_target } NOT = { secret_target = { has_trait = legitimized_bastard } } } OR = { secret_is_always_interesting_trigger = yes is_blackmailable_secret_trigger = { BLACKMAILER = scope:councillor_liege PARTICIPANT = scope:suitable_secret.secret_owner } } } spymaster_task_find_secrets_block_spymaster_self_reveal_trigger = { # Spymaster should not reveal secrets targeting themselves unless it is a murder attempt trigger_if = { limit = { exists = secret_target NOT = { secret_type = secret_murder_attempt } } secret_target != scope:councillor } # If the spymaster is the father of a secret bastard, don't reveal that trigger_if = { limit = { OR = { secret_type = secret_disputed_heritage secret_type = secret_unmarried_illegitimate_child } exists = secret_target.real_father } secret_target.real_father != scope:councillor } } spymaster_task_find_secrets_suitable_minor_secret_trigger = { OR = { is_shunned_for = secret_owner AND = { NOT = { is_blackmailable_secret_trigger = { PARTICIPANT = secret_owner BLACKMAILER = scope:councillor_liege } } secret_is_always_interesting_trigger = yes } } NOT = { is_known_by = scope:councillor_liege } spymaster_task_find_secrets_block_spymaster_self_reveal_trigger = yes NOT = { any_secret_participant = { OR = { this = scope:councillor this = scope:councillor_liege } } } spymaster_task_find_secrets_interesting_secret_type_trigger = yes } spymaster_task_find_secrets_suitable_major_secret_trigger = { is_criminal_for = secret_owner NOT = { is_known_by = scope:councillor_liege } spymaster_task_find_secrets_block_spymaster_self_reveal_trigger = yes NOT = { any_secret_participant = { OR = { this = scope:councillor this = scope:councillor_liege } } } spymaster_task_find_secrets_interesting_secret_type_trigger = yes } spymaster_task_find_secrets_court_has_minor_secrets_trigger = { OR = { AND = { has_any_secrets = yes any_secret = { spymaster_task_find_secrets_suitable_minor_secret_trigger = yes } } any_vassal = { has_any_secrets = yes this != scope:councillor_liege this != scope:councillor any_secret = { spymaster_task_find_secrets_suitable_minor_secret_trigger = yes } } any_courtier_or_guest = { has_any_secrets = yes this != scope:councillor_liege this != scope:councillor any_secret = { spymaster_task_find_secrets_suitable_minor_secret_trigger = yes } } } } spymaster_task_find_secrets_court_has_major_secrets_trigger = { OR = { AND = { has_any_secrets = yes any_secret = { spymaster_task_find_secrets_suitable_major_secret_trigger = yes } } any_vassal = { has_any_secrets = yes this != scope:councillor_liege this != scope:councillor any_secret = { spymaster_task_find_secrets_suitable_major_secret_trigger = yes } } any_courtier_or_guest = { has_any_secrets = yes this != scope:councillor_liege this != scope:councillor any_secret = { spymaster_task_find_secrets_suitable_major_secret_trigger = yes } } } } spymaster_find_secrets_secret_holder_is_interesting_to_me_trigger = { scope:councillor_liege = { save_temporary_scope_as = me } scope:secret_holder ?= { OR = { is_ruler = yes is_close_or_extended_family_of = scope:me is_courtier_of = scope:me has_relation_rival = scope:me has_relation_lover = scope:me is_player_heir_of = scope:me } } } spymaster_find_secrets_secret_target_is_interesting_to_me_trigger = { scope:councillor_liege = { save_temporary_scope_as = me } trigger_if = { limit = { exists = secret_target } secret_target = { OR = { is_close_or_extended_family_of = scope:me is_courtier_of = scope:me has_relation_rival = scope:me has_relation_lover = scope:me is_player_heir_of = scope:me } } } trigger_else = { always = no } } # Event triggers # Defined here because they need to be used in event + council task desc marshal_task_1101_county_trigger = { holder = root NOT = { has_county_modifier = marshal_task_organized_service_modifier } } marshal_task_1102_county_trigger = { NOT = { has_county_modifier = marshal_task_military_presence_modifier } } marshal_task_1003_county_trigger = { is_valid_for_county_corruption_trigger = yes OR = { NOT = { has_county_modifier = county_corruption_unsafe_highways_modifier } NOT = { has_county_modifier = county_corruption_thieves_guild_modifier } NOT = { has_county_modifier = county_corruption_bandits_rampant_modifier } } } steward_task_county_corruption_county_trigger = { holder = { OR = { is_ai = yes this = root } } } councillor_spouse_learning_2603_valid_councillor_trigger = { is_available_ai_adult = yes this != scope:councillor } councillor_liege_has_erudition_legacy_5_perk = { scope:councillor_liege.dynasty ?= { has_dynasty_perk = erudition_legacy_5 } } councillor_liege_has_customs_legacy_perk = { scope:councillor_liege.dynasty ?= { has_dynasty_perk = ep1_culture_legacy_2 } } councillor_liege_has_family_business_bonus = { scope:councillor_liege.culture ?= { has_cultural_parameter = close_family_better_councillors } scope:councillor ?= { is_close_family_of = scope:councillor_liege } } councillor_liege_has_consulted_house_bonus = { scope:councillor_liege ?= { has_character_flag = fp3_consulted_house } scope:councillor.house ?= scope:councillor_liege.house } councillor_is_unskilled_trigger = { trigger_if = { limit = { $EMPLOYER$.cp:councillor_chancellor ?= this } diplomacy < mediocre_skill_rating } trigger_else_if = { limit = { $EMPLOYER$.cp:councillor_steward ?= this } stewardship < mediocre_skill_rating } trigger_else_if = { limit = { $EMPLOYER$.cp:councillor_marshal ?= this } martial < mediocre_skill_rating } trigger_else_if = { limit = { $EMPLOYER$.cp:councillor_spymaster ?= this } intrigue < mediocre_skill_rating } trigger_else = { learning < mediocre_skill_rating } } councillor_is_skilled_trigger = { trigger_if = { limit = { $EMPLOYER$.cp:councillor_chancellor ?= this } diplomacy > decent_skill_rating } trigger_else_if = { limit = { $EMPLOYER$.cp:councillor_steward ?= this } stewardship > decent_skill_rating } trigger_else_if = { limit = { $EMPLOYER$.cp:councillor_marshal ?= this } martial > decent_skill_rating } trigger_else_if = { limit = { $EMPLOYER$.cp:councillor_spymaster ?= this } intrigue > decent_skill_rating } trigger_else = { learning > decent_skill_rating } } kurultai_is_skilled_trigger = { trigger_if = { limit = { $EMPLOYER$.cp:councillor_kurultai_1 ?= this } OR = { average_skill_rating >= sum_of_all_skills_threshold_average has_any_high_skill_rating = yes } } trigger_else_if = { limit = { $EMPLOYER$.cp:councillor_kurultai_2 ?= this } OR = { average_skill_rating >= sum_of_all_skills_threshold_average has_any_high_skill_rating = yes } } trigger_else_if = { limit = { $EMPLOYER$.cp:councillor_kurultai_3 ?= this } OR = { average_skill_rating >= sum_of_all_skills_threshold_average has_any_high_skill_rating = yes } } trigger_else_if = { limit = { $EMPLOYER$.cp:councillor_kurultai_4 ?= this } OR = { average_skill_rating >= sum_of_all_skills_threshold_average has_any_high_skill_rating = yes } } trigger_else = { intrigue > decent_skill_rating } # Spymaster } #FP3 Legacy Track: councillor_liege_has_khvarenah_legacy_perk = { exists = scope:councillor_liege.dynasty scope:councillor_liege.dynasty = { has_dynasty_perk = fp3_khvarenah_legacy_4 } } can_be_knight_now_light_trigger = { is_available_quick = { ai = yes # Players can't be knights imprisoned = no adult = yes alive = yes } } can_be_trained_as_knight_now_light_trigger = { can_be_knight_now_light_trigger = yes is_in_army = no has_contagious_deadly_disease_trigger = no NOT = { has_trait = incapable } custom_description = { text = ALREADY_IN_ACTIVITY NOR = { exists = involved_activity has_variable = homage_liege_scope has_character_flag = meditation_character_flag has_character_flag = local_shrine_rite has_character_flag = petition_liege_character_flag has_character_flag = holding_court_character_flag is_being_visited_on_tour_strict = yes } } custom_description = { text = ALREADY_PLANNING_ACTIVITY NOT = { has_character_flag = planning_an_activity } } # Variable set within the adventure inspiration events NOT = { has_variable = gone_adventuring } } teacher_has_trait_that_student_does_not_trigger = { OR = { AND = { $TEACHER$ = { has_trait = logistician } $STUDENT$ = { NOT = { has_trait = logistician } } } AND = { $TEACHER$ = { has_trait = military_engineer } $STUDENT$ = { NOT = { has_trait = military_engineer } } } AND = { $TEACHER$ = { has_trait = aggressive_attacker } $STUDENT$ = { NOT = { has_trait = aggressive_attacker } } } AND = { $TEACHER$ = { has_trait = unyielding_defender } $STUDENT$ = { NOT = { has_trait = unyielding_defender } } } AND = { $TEACHER$ = { has_trait = forder } $STUDENT$ = { NOT = { has_trait = forder } } } AND = { $TEACHER$ = { has_trait = flexible_leader } $STUDENT$ = { NOT = { has_trait = flexible_leader } } } AND = { $TEACHER$ = { has_trait = desert_warrior } $STUDENT$ = { NOT = { has_trait = desert_warrior } } } AND = { $TEACHER$ = { has_trait = jungle_stalker } $STUDENT$ = { NOT = { has_trait = jungle_stalker } } } AND = { $TEACHER$ = { has_trait = winter_soldier } $STUDENT$ = { NOT = { has_trait = winter_soldier } } } AND = { $TEACHER$ = { has_trait = reaver } $STUDENT$ = { NOT = { has_trait = reaver } } } AND = { $TEACHER$ = { has_trait = reckless } $STUDENT$ = { NOT = { has_trait = reckless } } } AND = { $TEACHER$ = { has_trait = holy_warrior } $STUDENT$ = { NOT = { has_trait = holy_warrior } } } AND = { $TEACHER$ = { has_trait = open_terrain_expert } $STUDENT$ = { NOT = { has_trait = open_terrain_expert } } } AND = { $TEACHER$ = { has_trait = rough_terrain_expert } $STUDENT$ = { NOT = { has_trait = rough_terrain_expert } } } AND = { $TEACHER$ = { has_trait = forest_fighter } $STUDENT$ = { NOT = { has_trait = forest_fighter } } } AND = { $TEACHER$ = { has_trait = cautious_leader } $STUDENT$ = { NOT = { has_trait = cautious_leader } } } AND = { $TEACHER$ = { has_trait = organizer } $STUDENT$ = { NOT = { has_trait = organizer } } } } }