# ============================================================
# MAA COUNTERS & WAR TACTICS TRIGGERS
# ============================================================

# MAA Counter Logic
qyv_ai_should_counter_heavy_infantry = {
    trigger = {
        is_ai = yes
        is_ruler = yes
        any_neighbor_independent_ruler = {
            limit = {
                NOT = { is_allied_to = root }
                any_men_at_arms = { type = men_at_arms_heavy_infantry }
            }
            save_scope_as = heavy_infantry_threat
        }
    }
}

qyv_ai_should_counter_cavalry = {
    trigger = {
        is_ai = yes
        is_ruler = yes
        any_neighbor_independent_ruler = {
            limit = {
                NOT = { is_allied_to = root }
                any_men_at_arms = { type = men_at_arms_cavalry }
            }
            save_scope_as = cavalry_threat
        }
    }
}

qyv_ai_should_counter_skirmishers = {
    trigger = {
        is_ai = yes
        is_ruler = yes
        any_neighbor_independent_ruler = {
            limit = {
                NOT = { is_allied_to = root }
                any_men_at_arms = { type = men_at_arms_skirmishers }
            }
            save_scope_as = skirmisher_threat
        }
    }
}

qyv_ai_should_counter_pikemen = {
    trigger = {
        is_ai = yes
        is_ruler = yes
        any_neighbor_independent_ruler = {
            limit = {
                NOT = { is_allied_to = root }
                any_men_at_arms = { type = men_at_arms_pikemen }
            }
            save_scope_as = pikemen_threat
        }
    }
}

qyv_ai_should_counter_crossbowmen = {
    trigger = {
        is_ai = yes
        is_ruler = yes
        any_neighbor_independent_ruler = {
            limit = {
                NOT = { is_allied_to = root }
                any_men_at_arms = { type = men_at_arms_crossbowmen }
            }
            save_scope_as = crossbowmen_threat
        }
    }
}

qyv_ai_should_counter_archers = {
    trigger = {
        is_ai = yes
        is_ruler = yes
        any_neighbor_independent_ruler = {
            limit = {
                NOT = { is_allied_to = root }
                any_men_at_arms = { type = men_at_arms_archers }
            }
            save_scope_as = archer_threat
        }
    }
}

qyv_ai_should_counter_siege = {
    trigger = {
        is_ai = yes
        is_ruler = yes
        any_neighbor_independent_ruler = {
            limit = {
                NOT = { is_allied_to = root }
                any_men_at_arms = { type = men_at_arms_siege }
            }
            save_scope_as = siege_threat
        }
    }
}

# MAA Raising Logic
qyv_ai_should_raise_pikemen = {
    trigger = {
        is_ai = yes
        is_ruler = yes
        gold >= 500
        NOT = { in_debt = yes }
        NOT = { has_men_at_arms_type = { type = men_at_arms_pikemen } }
        any_neighbor_independent_ruler = {
            limit = {
                NOT = { is_allied_to = root }
                any_men_at_arms = { type = men_at_arms_cavalry }
            }
        }
    }
}

qyv_ai_should_raise_crossbowmen = {
    trigger = {
        is_ai = yes
        is_ruler = yes
        gold >= 500
        NOT = { in_debt = yes }
        NOT = { has_men_at_arms_type = { type = men_at_arms_crossbowmen } }
        any_neighbor_independent_ruler = {
            limit = {
                NOT = { is_allied_to = root }
                any_men_at_arms = { type = men_at_arms_heavy_infantry }
            }
        }
    }
}

qyv_ai_should_raise_skirmishers = {
    trigger = {
        is_ai = yes
        is_ruler = yes
        gold >= 500
        NOT = { in_debt = yes }
        NOT = { has_men_at_arms_type = { type = men_at_arms_skirmishers } }
        any_neighbor_independent_ruler = {
            limit = {
                NOT = { is_allied_to = root }
                any_men_at_arms = { type = men_at_arms_pikemen }
            }
        }
    }
}

qyv_ai_should_raise_heavy_infantry = {
    trigger = {
        is_ai = yes
        is_ruler = yes
        gold >= 500
        NOT = { in_debt = yes }
        NOT = { has_men_at_arms_type = { type = men_at_arms_heavy_infantry } }
        any_neighbor_independent_ruler = {
            limit = {
                NOT = { is_allied_to = root }
                any_men_at_arms = { type = men_at_arms_skirmishers }
            }
        }
    }
}

qyv_ai_should_raise_cavalry = {
    trigger = {
        is_ai = yes
        is_ruler = yes
        gold >= 500
        NOT = { in_debt = yes }
        NOT = { has_men_at_arms_type = { type = men_at_arms_cavalry } }
        any_neighbor_independent_ruler = {
            limit = {
                NOT = { is_allied_to = root }
                any_men_at_arms = { type = men_at_arms_archers }
            }
        }
    }
}

qyv_ai_should_raise_archers = {
    trigger = {
        is_ai = yes
        is_ruler = yes
        gold >= 500
        NOT = { in_debt = yes }
        NOT = { has_men_at_arms_type = { type = men_at_arms_archers } }
        any_neighbor_independent_ruler = {
            limit = {
                NOT = { is_allied_to = root }
                any_men_at_arms = { type = men_at_arms_light_skirmish }
            }
        }
    }
}

qyv_ai_should_raise_specialist = {
    trigger = {
        is_ai = yes
        is_ruler = yes
        gold >= 800
        NOT = { in_debt = yes }
        any_neighbor_independent_ruler = {
            limit = {
                NOT = { is_allied_to = root }
                any_men_at_arms = { type = men_at_arms_siege }
            }
        }
    }
}

# MAA Disband Logic
qyv_ai_should_disband_expensive_maa = {
    trigger = {
        is_ai = yes
        is_ruler = yes
        in_debt = yes
        any_men_at_arms = {
            maintenance > 100
        }
        save_scope_as = expensive_maa
    }
}

qyv_ai_should_disband_unused_maa = {
    trigger = {
        is_ai = yes
        is_ruler = yes
        NOT = { is_at_war = yes }
        any_men_at_arms = {
            maintenance > 50
        }
        gold < 200
        save_scope_as = unused_maa
    }
}

# War Tactics Triggers
qyv_ai_should_split_armies = {
    trigger = {
        is_ai = yes
        is_ruler = yes
        is_at_war = yes
        any_army = {
            leader = { is_ruler = root }
            location = { is_besieging = yes }
            friendly_units > 1000
        }
        any_owned_province = {
            is_occupied = no
            any_neighbor_province = {
                is_occupied = no
                is_besieged = no
                owner = { is_ruler = root }
            }
        }
    }
}

qyv_ai_should_hunt_enemy_army = {
    trigger = {
        is_ai = yes
        is_ruler = yes
        is_at_war = yes
        any_army = {
            leader = { is_ruler = root }
            location = { is_in_combat = no }
            friendly_combat_width > enemy_combat_width * 1.3
        }
        any_enemy_army = {
            location = { distance_to = root.any_army.location < 50 }
            enemy_combat_width < root.any_army.friendly_combat_width * 0.8
            save_scope_as = vulnerable_enemy
        }
    }
}

qyv_ai_should_use_terrain = {
    trigger = {
        is_ai = yes
        is_ruler = yes
        is_at_war = yes
        any_army = {
            leader = { is_ruler = root }
            location = {
                OR = {
                    terrain = mountains
                    terrain = forest
                    terrain = jungle
                    terrain = desert
                    terrain = wetlands
                }
            }
        }
    }
}

qyv_ai_should_avoid_attrition = {
    trigger = {
        is_ai = yes
        is_ruler = yes
        is_at_war = yes
        any_army = {
            leader = { is_ruler = root }
            location = {
                OR = {
                    terrain = mountains
                    terrain = desert
                    terrain = arctic
                }
                supply_limit < friendly_units * 1.2
            }
        }
    }
}

qyv_ai_should_siege_multiple = {
    trigger = {
        is_ai = yes
        is_ruler = yes
        is_at_war = yes
        any_army = {
            leader = { is_ruler = root }
            location = { is_besieging = yes }
            friendly_units > 1500
        }
        any_owned_province = {
            is_occupied = no
            any_neighbor_province = {
                is_occupied = no
                is_besieged = no
                owner = { is_ruler = root }
                holding = { is_fortified = yes }
            }
        }
    }
}

qyv_ai_should_use_siege_equipment = {
    trigger = {
        is_ai = yes
        is_ruler = yes
        is_at_war = yes
        any_army = {
            leader = { is_ruler = root }
            location = { is_besieging = yes }
            NOT = { has_siege_equipment = yes }
            friendly_units > 500
        }
    }
}

qyv_ai_should_mercenary_company = {
    trigger = {
        is_ai = yes
        is_ruler = yes
        is_at_war = yes
        gold >= 500
        OR = {
            war = { attacker = { is_ruler = root } war_score < -20 }
            war = { defender = { is_ruler = root } war_score < -30 }
        }
        NOT = { has_character_flag = mercs_hired_this_war }
        any_mercenary_company = {
            available = yes
            cost <= root.gold * 0.5
            save_scope_as = merc_company
        }
    }
}

qyv_ai_should_disband_mercs = {
    trigger = {
        is_ai = yes
        is_ruler = yes
        NOT = { is_at_war = yes }
        any_mercenary_company = { employer = root }
        gold < 200
    }
}

qyv_ai_should_retreat = {
    trigger = {
        is_ai = yes
        is_ruler = yes
        is_at_war = yes
        any_army = {
            leader = { is_ruler = root }
            location = { is_in_combat = yes }
            friendly_combat_width < enemy_combat_width * 0.6
        }
    }
}

qyv_ai_should_call_allies = {
    trigger = {
        is_ai = yes
        is_ruler = yes
        is_at_war = yes
        war = {
            defender = { is_ruler = root }
            war_score < -10
        }
        any_ally = {
            limit = {
                military_strength > 2000
                NOT = { is_at_war = yes }
            }
            save_scope_as = available_ally
        }
    }
}

qyv_ai_should_white_peace = {
    trigger = {
        is_ai = yes
        is_ruler = yes
        is_at_war = yes
        war = {
            attacker = { is_ruler = root }
            war_score < -40
        }
        gold < 500
    }
}

qyv_ai_should_surrender = {
    trigger = {
        is_ai = yes
        is_ruler = yes
        is_at_war = yes
        war = {
            defender = { is_ruler = root }
            war_score < -60
        }
        war_exhaustion >= 50
    }
}

qyv_ai_should_choose_cb = {
    trigger = {
        is_ai = yes
        is_ruler = yes
        is_independent_ruler = yes
        NOT = { is_at_war = yes }
        gold >= 300
        prestige >= 100
    }
}

# CB Selection Logic
qyv_ai_has_claim_cb = {
    trigger = {
        is_ai = yes
        is_ruler = yes
        is_independent_ruler = yes
        NOT = { is_at_war = yes }
        any_neighbor_independent_ruler = {
            limit = {
                has_claim_on = root
                military_strength < root.military_strength * 1.2
            }
            save_scope_as = claimant_target
        }
    }
}

qyv_ai_has_holy_war_cb = {
    trigger = {
        is_ai = yes
        is_ruler = yes
        is_independent_ruler = yes
        NOT = { is_at_war = yes }
        any_neighbor_independent_ruler = {
            limit = {
                faith != root.faith
                military_strength < root.military_strength * 1.3
                NOT = { has_truce_with = root }
            }
            save_scope_as = holy_war_target
        }
    }
}

qyv_ai_has_de_jure_cb = {
    trigger = {
        is_ai = yes
        is_ruler = yes
        is_independent_ruler = yes
        NOT = { is_at_war = yes }
        any_neighbor_independent_ruler = {
            limit = {
                de_jure_liege = root
                military_strength < root.military_strength * 1.2
            }
            save_scope_as = de_jure_target
        }
    }
}

qyv_ai_has_conquest_cb = {
    trigger = {
        is_ai = yes
        is_ruler = yes
        is_independent_ruler = yes
        NOT = { is_at_war = yes }
        any_neighbor_independent_ruler = {
            limit = {
                military_strength < root.military_strength * 1.2
                NOT = { is_allied_to = root }
                NOT = { has_truce_with = root }
            }
            save_scope_as = conquest_target
        }
    }
}