############################################################
##               Elite Recruitment Triggers               ##
############################################################
##                                                        ##
## Shared eligibility helpers, per-role gender gates,     ##
## aggregate visibility, per-role affordability, and      ##
## pagination checks.                                     ##
##                                                        ##
############################################################

## --- Shared helpers --- ##

# Whether the Cost rule is anything but Disabled. Gates the Recruit an
# Elite Specialist decision and each option inside the menu.
elite_recruitment_enabled_trigger = {
  NOT = { has_game_rule = { name = elite_recruitment value = disabled } }
}

# Whether the Gender Gating rule is set to Bypass. When bypassed, every
# role opens to both genders regardless of council law and faith ordination
# rules.
elite_recruitment_gender_gating_bypassed_trigger = {
  has_game_rule = { name = elite_recruitment_gender_gating value = bypass_gender_gating }
}

# Whether the realm allows women in council independent of the Status
# of Women law.
realm_allows_female_councillors_trigger = {
  OR = {
    has_game_rule = { name = gender value = all }
    has_religion_feature = religion_matriarchal
    has_religion_feature = religion_equal
    has_religion_feature = religion_feature_bon
  }
}

# Whether the character belongs to any Holy Fury warrior lodge.
in_warrior_lodge_trigger = {
  OR = {
    society_member_of = warrior_lodge_norse
    society_member_of = warrior_lodge_tengri
    society_member_of = warrior_lodge_baltic
    society_member_of = warrior_lodge_finnish
    society_member_of = warrior_lodge_slavic
    society_member_of = warrior_lodge_west_african
    society_member_of = warrior_lodge_zun
    society_member_of = warrior_lodge_bon
    society_member_of = warrior_lodge_hellenic
  }
}

## --- Per-role gender gate helpers --- ##

# Each helper answers whether the realm's council law and faith ordination
# rules allow hiring the given role at the given gender. Referenced by the
# aggregate helpers below and by every per-option trigger in ER.11 through
# ER.14.

# Male hiring is permitted whenever the realm's faith is not matriarchal.
# Marshal, Steward, Chancellor, and Spymaster share this gate.
elite_recruitment_generic_male_gate_trigger = {
  NOT = { has_religion_feature = religion_matriarchal }
}

# Male chaplain hiring requires the faith to ordain men. Passes when the
# faith allows male temple holders or is patriarchal.
elite_recruitment_chaplain_male_gate_trigger = {
  OR = {
    religion_allows_male_temple_holders = yes
    has_religion_feature = religion_patriarchal
  }
}

# Female hiring is permitted whenever the realm allows female councillors
# or has Full Status of Women. Marshal, Steward, and Chancellor share
# this gate.
elite_recruitment_generic_female_gate_trigger = {
  OR = {
    realm_allows_female_councillors_trigger = yes
    has_law = status_of_women_4
  }
}

# Female spymasters have a wider vanilla whitelist. Adds non-patriarchal
# pagan faiths, Cathars, and Messalians to the generic female gate.
elite_recruitment_spymaster_female_gate_trigger = {
  OR = {
    realm_allows_female_councillors_trigger = yes
    has_law = status_of_women_4
    AND = {
      religion_group = pagan_group
      NOT = { has_religion_feature = religion_patriarchal }
    }
    religion = cathar
    religion = messalian
  }
}

# Female chaplain hiring requires the faith to ordain women. Passes when
# the faith allows female temple holders or is matriarchal.
elite_recruitment_chaplain_female_gate_trigger = {
  OR = {
    religion_allows_female_temple_holders = yes
    has_religion_feature = religion_matriarchal
  }
}

## --- Aggregate role visibility helpers --- ##

# Aggregate over the per-role gender gates and affordability triggers.
# Used by the Recruit an Elite Specialist decision's potential and allow,
# and by its effect's gender routing between ER.10, ER.11, and ER.12.

# Whether at least one male role passes its gender gate. Used to auto-skip
# the gender picker when only one gender qualifies. Two branches: the
# generic male gate (Marshal, Steward, Chancellor, Spymaster) and the
# Chaplain male gate. Bypass short-circuits.
elite_recruitment_any_male_role_eligible_trigger = {
  OR = {
    elite_recruitment_gender_gating_bypassed_trigger = yes
    elite_recruitment_generic_male_gate_trigger = yes
    elite_recruitment_chaplain_male_gate_trigger = yes
  }
}

# Whether at least one female role passes its gender gate. Used to auto-
# skip the gender picker when only one gender qualifies. Three branches:
# the generic female gate (Marshal, Steward, Chancellor), the widened
# Spymaster female gate, and the Chaplain female gate. Bypass short-
# circuits.
elite_recruitment_any_female_role_eligible_trigger = {
  OR = {
    elite_recruitment_gender_gating_bypassed_trigger = yes
    elite_recruitment_generic_female_gate_trigger = yes
    elite_recruitment_spymaster_female_gate_trigger = yes
    elite_recruitment_chaplain_female_gate_trigger = yes
  }
}

# Whether at least one male role is both eligible and affordable. Tighter
# than _any_male_role_eligible_trigger above, which only checks gender
# gates. Prevents routing the player into a role picker where every option
# is priced out.
elite_recruitment_any_male_role_eligible_and_affordable_trigger = {
  trigger_if = {
    limit = { elite_recruitment_gender_gating_bypassed_trigger = yes }
    OR = {
      elite_recruitment_marshal_can_afford_trigger = yes
      elite_recruitment_steward_can_afford_trigger = yes
      elite_recruitment_chancellor_can_afford_trigger = yes
      elite_recruitment_spymaster_can_afford_trigger = yes
      elite_recruitment_chaplain_can_afford_trigger = yes
    }
  }
  trigger_else = {
    OR = {
      AND = {
        elite_recruitment_generic_male_gate_trigger = yes
        OR = {
          elite_recruitment_marshal_can_afford_trigger = yes
          elite_recruitment_steward_can_afford_trigger = yes
          elite_recruitment_chancellor_can_afford_trigger = yes
          elite_recruitment_spymaster_can_afford_trigger = yes
        }
      }
      AND = {
        elite_recruitment_chaplain_male_gate_trigger = yes
        elite_recruitment_chaplain_can_afford_trigger = yes
      }
    }
  }
}

# Whether at least one female role is both eligible and affordable. Tighter
# than _any_female_role_eligible_trigger above, which only checks gender
# gates. Prevents routing the player into a role picker where every option
# is priced out.
elite_recruitment_any_female_role_eligible_and_affordable_trigger = {
  trigger_if = {
    limit = { elite_recruitment_gender_gating_bypassed_trigger = yes }
    OR = {
      elite_recruitment_marshal_can_afford_trigger = yes
      elite_recruitment_steward_can_afford_trigger = yes
      elite_recruitment_chancellor_can_afford_trigger = yes
      elite_recruitment_spymaster_can_afford_trigger = yes
      elite_recruitment_chaplain_can_afford_trigger = yes
    }
  }
  trigger_else = {
    OR = {
      AND = {
        elite_recruitment_generic_female_gate_trigger = yes
        OR = {
          elite_recruitment_marshal_can_afford_trigger = yes
          elite_recruitment_steward_can_afford_trigger = yes
          elite_recruitment_chancellor_can_afford_trigger = yes
        }
      }
      AND = {
        elite_recruitment_spymaster_female_gate_trigger = yes
        elite_recruitment_spymaster_can_afford_trigger = yes
      }
      AND = {
        elite_recruitment_chaplain_female_gate_trigger = yes
        elite_recruitment_chaplain_can_afford_trigger = yes
      }
    }
  }
}

## --- Per-role affordability gates --- ##

# Each role's check mirrors its pay_elite_*_cost effect. Gold needs both
# scaled_wealth (income fraction) and wealth (the firm floor). The secondary
# currency matches the role. Modicum is the default and the rule-absent
# fallback.

# Marshal: balanced gold and Prestige.
elite_recruitment_marshal_can_afford_trigger = {
  trigger_if = {
    limit = { has_game_rule = { name = elite_recruitment value = pittance } }
    scaled_wealth >= 0.125
    wealth >= 8
    prestige >= 25
  }
  trigger_else_if = {
    limit = { has_game_rule = { name = elite_recruitment value = trifle } }
    scaled_wealth >= 0.25
    wealth >= 15
    prestige >= 50
  }
  trigger_else_if = {
    limit = { has_game_rule = { name = elite_recruitment value = bounty } }
    scaled_wealth >= 1.0
    wealth >= 60
    prestige >= 200
  }
  trigger_else_if = {
    limit = { has_game_rule = { name = elite_recruitment value = fortune } }
    scaled_wealth >= 2.0
    wealth >= 120
    prestige >= 400
  }
  trigger_else = { # modicum
    scaled_wealth >= 0.5
    wealth >= 30
    prestige >= 100
  }
}

# Steward: heaviest gold, lightest Prestige.
elite_recruitment_steward_can_afford_trigger = {
  trigger_if = {
    limit = { has_game_rule = { name = elite_recruitment value = pittance } }
    scaled_wealth >= 0.25
    wealth >= 12
    prestige >= 5
  }
  trigger_else_if = {
    limit = { has_game_rule = { name = elite_recruitment value = trifle } }
    scaled_wealth >= 0.5
    wealth >= 25
    prestige >= 10
  }
  trigger_else_if = {
    limit = { has_game_rule = { name = elite_recruitment value = bounty } }
    scaled_wealth >= 2.0
    wealth >= 100
    prestige >= 50
  }
  trigger_else_if = {
    limit = { has_game_rule = { name = elite_recruitment value = fortune } }
    scaled_wealth >= 4.0
    wealth >= 200
    prestige >= 100
  }
  trigger_else = { # modicum
    scaled_wealth >= 1.0
    wealth >= 50
    prestige >= 25
  }
}

# Chancellor: light gold, heaviest Prestige.
elite_recruitment_chancellor_can_afford_trigger = {
  trigger_if = {
    limit = { has_game_rule = { name = elite_recruitment value = pittance } }
    scaled_wealth >= 0.0625
    wealth >= 5
    prestige >= 35
  }
  trigger_else_if = {
    limit = { has_game_rule = { name = elite_recruitment value = trifle } }
    scaled_wealth >= 0.125
    wealth >= 10
    prestige >= 75
  }
  trigger_else_if = {
    limit = { has_game_rule = { name = elite_recruitment value = bounty } }
    scaled_wealth >= 0.5
    wealth >= 40
    prestige >= 300
  }
  trigger_else_if = {
    limit = { has_game_rule = { name = elite_recruitment value = fortune } }
    scaled_wealth >= 1.0
    wealth >= 80
    prestige >= 600
  }
  trigger_else = { # modicum
    scaled_wealth >= 0.25
    wealth >= 20
    prestige >= 150
  }
}

# Spymaster: more gold than Prestige.
elite_recruitment_spymaster_can_afford_trigger = {
  trigger_if = {
    limit = { has_game_rule = { name = elite_recruitment value = pittance } }
    scaled_wealth >= 0.1875
    wealth >= 10
    prestige >= 10
  }
  trigger_else_if = {
    limit = { has_game_rule = { name = elite_recruitment value = trifle } }
    scaled_wealth >= 0.375
    wealth >= 20
    prestige >= 25
  }
  trigger_else_if = {
    limit = { has_game_rule = { name = elite_recruitment value = bounty } }
    scaled_wealth >= 1.5
    wealth >= 80
    prestige >= 100
  }
  trigger_else_if = {
    limit = { has_game_rule = { name = elite_recruitment value = fortune } }
    scaled_wealth >= 3.0
    wealth >= 160
    prestige >= 200
  }
  trigger_else = { # modicum
    scaled_wealth >= 0.75
    wealth >= 40
    prestige >= 50
  }
}

# Chaplain: heaviest Piety, a little gold.
elite_recruitment_chaplain_can_afford_trigger = {
  trigger_if = {
    limit = { has_game_rule = { name = elite_recruitment value = pittance } }
    scaled_wealth >= 0.0625
    wealth >= 5
    piety >= 35
  }
  trigger_else_if = {
    limit = { has_game_rule = { name = elite_recruitment value = trifle } }
    scaled_wealth >= 0.125
    wealth >= 10
    piety >= 75
  }
  trigger_else_if = {
    limit = { has_game_rule = { name = elite_recruitment value = bounty } }
    scaled_wealth >= 0.5
    wealth >= 40
    piety >= 300
  }
  trigger_else_if = {
    limit = { has_game_rule = { name = elite_recruitment value = fortune } }
    scaled_wealth >= 1.0
    wealth >= 80
    piety >= 600
  }
  trigger_else = { # modicum
    scaled_wealth >= 0.25
    wealth >= 20
    piety >= 150
  }
}

## --- Menu pagination helpers --- ##

# True when all 5 male recruit options would be visible simultaneously. Every
# gender gate passes and every role's affordability check passes. The role
# picker uses this to switch between single-page (up to 4 visible) and
# paginated (all 5 visible) layouts. When true, Spymaster and Chaplain hide
# from page 1 and the "Or perhaps another..." button shows. When false,
# page 1 shows whichever roles are visible directly with no nav button.
elite_recruitment_all_5_male_visible_trigger = {
  trigger_if = {
    limit = { elite_recruitment_gender_gating_bypassed_trigger = yes }
    always = yes
  }
  trigger_else = {
    elite_recruitment_generic_male_gate_trigger = yes
    elite_recruitment_chaplain_male_gate_trigger = yes
  }
  elite_recruitment_marshal_can_afford_trigger = yes
  elite_recruitment_steward_can_afford_trigger = yes
  elite_recruitment_chancellor_can_afford_trigger = yes
  elite_recruitment_spymaster_can_afford_trigger = yes
  elite_recruitment_chaplain_can_afford_trigger = yes
}

# Female mirror.
elite_recruitment_all_5_female_visible_trigger = {
  trigger_if = {
    limit = { elite_recruitment_gender_gating_bypassed_trigger = yes }
    always = yes
  }
  trigger_else = {
    elite_recruitment_generic_female_gate_trigger = yes
    elite_recruitment_chaplain_female_gate_trigger = yes
  }
  elite_recruitment_marshal_can_afford_trigger = yes
  elite_recruitment_steward_can_afford_trigger = yes
  elite_recruitment_chancellor_can_afford_trigger = yes
  elite_recruitment_spymaster_can_afford_trigger = yes
  elite_recruitment_chaplain_can_afford_trigger = yes
}
