namespace = qyv_ai_military

# ============================================================
# QUARTERLY: MAA OPTIMIZATION
# ============================================================

character_event = {
    id = qyv_mil.0100
    hidden = yes
    is_triggered_only = no

    trigger = {
        is_ai = yes
        is_ruler = yes
    }

    mean_time_to_happen = { months = 3 }

    immediate = {
        # Clean up expensive/unused MaA
        qyv_ai_cleanup_maa = yes

        # Optimize MaA based on strategy
        if = {
            limit = { qyv_strat_expansion = root }
            qyv_ai_optimize_maa_for_expansion = yes
        }
        else_if = {
            limit = { qyv_strat_consolidation = root }
            qyv_ai_optimize_maa_for_defense = yes
        }
        else_if = {
            limit = { qyv_strat_stability = root }
            qyv_ai_optimize_maa_for_defense = yes
        }
        else_if = {
            limit = { qyv_strat_survival = root }
            qyv_ai_optimize_maa_for_defense = yes
        }

        # Minor powers prepare defensively BEFORE war starts - they cannot
        # afford to be caught with no army when a stronger neighbor attacks
        if = {
            limit = {
                qyv_ai_is_minor_power = root
                qyv_ai_has_strong_threat = root
                NOT = { is_at_war = yes }
                gold >= 200
            }
            qyv_ai_raise_defensive_maa = yes
        }
    }

    option = { name = "OK" }
}

# ============================================================
# MONTHLY (WAR): MAA RAISING & TACTICS
# ============================================================

character_event = {
    id = qyv_mil.0200
    hidden = yes
    is_triggered_only = no

    trigger = {
        is_ai = yes
        is_ruler = yes
        is_at_war = yes
    }

    mean_time_to_happen = { months = 1 }

    immediate = {
        # Raise counter-MaA based on enemy composition
        if = { limit = { qyv_ai_should_raise_pikemen = root } qyv_ai_raise_pikemen = yes }
        if = { limit = { qyv_ai_should_raise_crossbowmen = root } qyv_ai_raise_crossbowmen = yes }
        if = { limit = { qyv_ai_should_raise_skirmishers = root } qyv_ai_raise_skirmishers = yes }
        if = { limit = { qyv_ai_should_raise_heavy_infantry = root } qyv_ai_raise_heavy_infantry = yes }
        if = { limit = { qyv_ai_should_raise_cavalry = root } qyv_ai_raise_cavalry = yes }
        if = { limit = { qyv_ai_should_raise_archers = root } qyv_ai_raise_archers = yes }
        if = { limit = { qyv_ai_should_raise_specialist = root } qyv_ai_raise_specialist = yes }

        # Siege equipment
        if = { limit = { qyv_ai_should_use_siege_equipment = root } qyv_ai_use_siege_equipment = yes }

        # Siege multiple holdings
        if = { limit = { qyv_ai_should_siege_multiple = root } qyv_ai_siege_multiple = yes }

        # Split armies for multiple sieges
        if = { limit = { qyv_ai_should_split_armies = root } qyv_ai_split_armies = yes }

        # Hunt vulnerable enemy armies
        if = { limit = { qyv_ai_should_hunt_enemy_army = root } qyv_ai_hunt_enemy_army = yes }

        # Use terrain advantage
        if = { limit = { qyv_ai_should_use_terrain = root } qyv_ai_use_terrain = yes }

        # Avoid attrition
        if = { limit = { qyv_ai_should_avoid_attrition = root } qyv_ai_avoid_attrition = yes }

        # Retreat from losing battles
        if = { limit = { qyv_ai_should_retreat = root } qyv_ai_retreat = yes }

        # Call allies when losing defensive
        if = { limit = { qyv_ai_should_call_allies = root } qyv_ai_call_allies = yes }

        # White peace when losing offensive
        if = { limit = { qyv_ai_should_white_peace = root } qyv_ai_white_peace = yes }

        # Surrender when hopeless defensive
        if = { limit = { qyv_ai_should_surrender = root } qyv_ai_surrender = yes }

        # Hire mercenaries when losing
        if = { limit = { qyv_ai_should_mercenary_company = root } qyv_ai_hire_mercs = yes }
    }

    option = { name = "OK" }
}

# ============================================================
# MONTHLY (PEACE): MAA DISband & MERCS
# ============================================================

character_event = {
    id = qyv_mil.0300
    hidden = yes
    is_triggered_only = no

    trigger = {
        is_ai = yes
        is_ruler = yes
        NOT = { is_at_war = yes }
    }

    mean_time_to_happen = { months = 1 }

    immediate = {
        # Disband expensive/unused MaA
        qyv_ai_cleanup_maa = yes

        # Disband mercenaries
        if = { limit = { qyv_ai_should_disband_mercs = root } qyv_ai_disband_mercs = yes }
    }

    option = { name = "OK" }
}

# ============================================================
# YEARLY: CB SELECTION & WAR DECLARATION
# ============================================================

character_event = {
    id = qyv_mil.0400
    hidden = yes
    is_triggered_only = no

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

    mean_time_to_happen = { months = 12 }

    immediate = {
        if = {
            limit = {
                OR = {
                    qyv_strat_expansion = root
                    qyv_strat_diplomacy = root
                }
            }
            qyv_ai_choose_cb = yes
        }
    }

    option = { name = "OK" }
}

# ============================================================
# MONTHLY (WAR): TACTICAL MANEUVERS
# ============================================================

character_event = {
    id = qyv_mil.0500
    hidden = yes
    is_triggered_only = no

    trigger = {
        is_ai = yes
        is_ruler = yes
        is_at_war = yes
    }

    mean_time_to_happen = { months = 1 }

    immediate = {
        # Hunt vulnerable enemy armies
        if = { limit = { qyv_ai_should_hunt_enemy_army = root } qyv_ai_hunt_enemy_army = yes }

        # Use terrain
        if = { limit = { qyv_ai_should_use_terrain = root } qyv_ai_use_terrain = yes }

        # Avoid attrition
        if = { limit = { qyv_ai_should_avoid_attrition = root } qyv_ai_avoid_attrition = yes }
    }

    option = { name = "OK" }
}

# ============================================================
# ON_ACTIONS
# ============================================================

on_actions = {
    on_quarterly_pulse = { events = { qyv_mil.0100 } }
    on_monthly_pulse = { events = { qyv_mil.0200 qyv_mil.0300 qyv_mil.0500 } }
    on_yearly_pulse = { events = { qyv_mil.0400 } }
}
# ============================================================
# MILITARY COORDINATION & JOIN BIGGER POWERS (v1.20.13)
# ============================================================

# Monthly: AI coordinates armies to move together
character_event = {
    id = qyv_mil.1000
    hidden = yes
    is_triggered_only = no

    trigger = {
        is_ai = yes
        is_ruler = yes
        is_at_war = yes
        any_ally = {
            is_at_war_with = root
            is_independent_ruler = yes
        }
        any_army = {
            count >= 2
            is_army = yes
        }
    }

    mean_time_to_happen = { months = 3 }

    immediate = {
        qyv_ai_coordinate_armies = yes
    }

    option = { name = "OK" }
}

# Monthly: AI concentrates forces in supply territory
character_event = {
    id = qyv_mil.1001
    hidden = yes
    is_triggered_only = no

    trigger = {
        is_ai = yes
        is_ruler = yes
        is_at_war = yes
        any_army = {
            limit = {
                is_army = yes
                NOT = { in_friendly_territory = yes }
            }
        }
    }

    mean_time_to_happen = { months = 3 }

    immediate = {
        qyv_ai_concentrate_forces = yes
    }

    option = { name = "OK" }
}

# Quarterly: AI prioritizes professional armies
character_event = {
    id = qyv_mil.1002
    hidden = yes
    is_triggered_only = no

    trigger = {
        is_ai = yes
        is_ruler = yes
        is_independent_ruler = yes
        qyv_ai_is_secure = root
        NOT = { is_at_war = yes }
        any_men_at_arms = {
            limit = {
                is_peasant_levy = yes
            }
        }
        gold >= 300
        NOT = { in_debt = yes }
    }

    mean_time_to_happen = { months = 12 }

    immediate = {
        qyv_ai_prioritize_professional = yes
    }

    option = { name = "OK" }
}

# Quarterly: AI demobilizes peasant armies when not at war
character_event = {
    id = qyv_mil.1003
    hidden = yes
    is_triggered_only = no

    trigger = {
        is_ai = yes
        is_ruler = yes
        is_independent_ruler = yes
        NOT = { is_at_war = yes }
        any_men_at_arms = {
            limit = {
                is_peasant_levy = yes
            }
        }
        any_men_at_arms = {
            limit = {
                is_peasant_levy = no
            }
        }
    }

    mean_time_to_happen = { months = 12 }

    immediate = {
        qyv_ai_demobilize_peasants = yes
    }

    option = { name = "OK" }
}

# Yearly: Small nations join bigger powers
character_event = {
    id = qyv_mil.1004
    hidden = yes
    is_triggered_only = no

    trigger = {
        is_ai = yes
        is_ruler = yes
        is_independent_ruler = yes
        qyv_ai_is_minor_power = root
        NOT = { is_at_war = yes }
        any_neighbor_independent_ruler = {
            limit = {
                NOT = { is_allied_to = root }
                NOT = { has_truce_with = root }
                military_strength > root.military_strength * 2.0
                is_rival = no
                OR = {
                    same_culture = yes
                    same_faith = yes
                    opinion_of_self >= 0
                }
            }
        }
    }

    mean_time_to_happen = { months = 24 }

    immediate = {
        qyv_ai_join_bigger_power = yes
    }

    option = { name = "OK" }
}

# Yearly: Small nations swear fealty to nearby powerful realms
character_event = {
    id = qyv_mil.1005
    hidden = yes
    is_triggered_only = no

    trigger = {
        is_ai = yes
        is_ruler = yes
        is_independent_ruler = yes
        qyv_ai_is_minor_power = root
        NOT = { is_at_war = yes }
        any_neighbor_independent_ruler = {
            limit = {
                military_strength > root.military_strength * 3.0
                is_rival = no
                OR = {
                    same_culture = yes
                    same_faith = yes
                    opinion_of_self >= 20
                }
            }
        }
    }

    mean_time_to_happen = { months = 36 }

    immediate = {
        qyv_ai_swear_fealty = yes
    }

    option = { name = "OK" }
}

# Yearly: Small nations form confederations
character_event = {
    id = qyv_mil.1006
    hidden = yes
    is_triggered_only = no

    trigger = {
        is_ai = yes
        is_ruler = yes
        is_independent_ruler = yes
        qyv_ai_is_minor_power = root
        NOT = { is_at_war = yes }
        any_neighbor_independent_ruler = {
            limit = {
                is_independent_ruler = yes
                qyv_ai_is_minor_power = scope:neighbor
                OR = {
                    same_culture = yes
                    same_faith = yes
                }
                NOT = { is_allied_to = root }
                has_truce = no
            }
        }
    }

    mean_time_to_happen = { months = 36 }

    immediate = {
        qyv_ai_form_confederation = yes
    }

    option = { name = "OK" }
}
