# ============================================================
# MAA COUNTERS & WAR TACTICS EFFECTS
# ============================================================

# MAA Counter Raising
qyv_ai_raise_pikemen = {
    raise_men_at_arms = { type = men_at_arms_pikemen }
    add_gold = -500
}

qyv_ai_raise_crossbowmen = {
    raise_men_at_arms = { type = men_at_arms_crossbowmen }
    add_gold = -500
}

qyv_ai_raise_skirmishers = {
    raise_men_at_arms = { type = men_at_arms_skirmishers }
    add_gold = -500
}

qyv_ai_raise_heavy_infantry = {
    raise_men_at_arms = { type = men_at_arms_heavy_infantry }
    add_gold = -500
}

qyv_ai_raise_cavalry = {
    raise_men_at_arms = { type = men_at_arms_cavalry }
    add_gold = -500
}

qyv_ai_raise_archers = {
    raise_men_at_arms = { type = men_at_arms_archers }
    add_gold = -500
}

qyv_ai_raise_specialist = {
    raise_men_at_arms = { type = men_at_arms_siege }
    add_gold = -800
}

# Defensive MAA for minor powers facing a strong threat.
# Raises cheap infantry only - small realms cannot afford the full counter suite.
qyv_ai_raise_defensive_maa = {
    effect = {
        if = {
            limit = {
                qyv_ai_is_minor_power = root
                gold >= 200
            }
            any_neighbor_independent_ruler = {
                limit = {
                    NOT = { is_allied_to = root }
                    any_men_at_arms = { type = cavalry }
                }
                raise_men_at_arms = { type = men_at_arms_pikemen }
            }
            else_if = {
                limit = {
                    any_neighbor_independent_ruler = {
                        limit = {
                            NOT = { is_allied_to = root }
                            any_men_at_arms = { type = heavy_infantry }
                        }
                    }
                }
                raise_men_at_arms = { type = men_at_arms_crossbowmen }
            }
            else = {
                raise_men_at_arms = { type = men_at_arms_heavy_infantry }
            }
        }
    }
}

# MAA Disbanding
qyv_ai_disband_expensive_maa = {
    scope:expensive_maa = {
        disband_men_at_arms = yes
    }
}

qyv_ai_disband_unused_maa = {
    scope:unused_maa = {
        disband_men_at_arms = yes
    }
}

# War Tactics Effects
qyv_ai_split_armies = {
    any_army = {
        limit = {
            leader = { is_ruler = root }
            location = { is_besieging = yes }
            friendly_units > 1000
        }
        split_army = { units = 500 }
    }
}

qyv_ai_hunt_enemy_army = {
    any_army = {
        limit = {
            leader = { is_ruler = root }
            location = { is_in_combat = no }
        }
        move_to = scope:vulnerable_enemy.location
    }
}

qyv_ai_use_terrain = {
    any_army = {
        limit = {
            leader = { is_ruler = root }
            location = {
                OR = {
                    terrain = mountains
                    terrain = forest
                    terrain = jungle
                    terrain = desert
                    terrain = wetlands
                }
            }
        }
        add_army_modifier = { modifier = defensive_position days = 30 }
    }
}

qyv_ai_avoid_attrition = {
    any_army = {
        limit = {
            leader = { is_ruler = root }
            location = {
                OR = {
                    terrain = mountains
                    terrain = desert
                    terrain = arctic
                }
                supply_limit < friendly_units * 1.2
            }
        }
        retreat = yes
    }
}

qyv_ai_siege_multiple = {
    any_army = {
        limit = {
            leader = { is_ruler = root }
            location = { is_besieging = yes }
            friendly_units > 1500
        }
        split_army = { units = 500 }
    }
    any_owned_province = {
        limit = {
            is_occupied = no
            any_neighbor_province = {
                is_occupied = no
                is_besieged = no
                owner = { is_ruler = root }
                holding = { is_fortified = yes }
            }
        }
        move_to = scope:province.location
    }
}

qyv_ai_use_siege_equipment = {
    any_army = {
        limit = {
            leader = { is_ruler = root }
            location = { is_besieging = yes }
            NOT = { has_siege_equipment = yes }
            friendly_units > 500
        }
        add_siege_equipment = yes
    }
}

qyv_ai_hire_mercs = {
    hire_mercenary_company = { company = scope:merc_company }
    set_character_flag = mercs_hired_this_war
}

qyv_ai_disband_mercs = {
    any_mercenary_company = {
        employer = root
        disband_mercenary_company = yes
    }
}

qyv_ai_retreat = {
    any_army = {
        limit = {
            leader = { is_ruler = root }
            location = { is_in_combat = yes }
            friendly_combat_width < enemy_combat_width * 0.6
        }
        retreat = yes
    }
}

qyv_ai_call_allies = {
    scope:available_ally = {
        call_ally = { target = root }
    }
}

qyv_ai_white_peace = {
    war = {
        attacker = { is_ruler = root }
        send_white_peace = yes
    }
}

qyv_ai_surrender = {
    war = {
        defender = { is_ruler = root }
        surrender = yes
    }
}

qyv_ai_choose_cb = {
    if = {
        limit = { qyv_ai_has_claim_cb = root }
        declare_war = { target = scope:claimant_target cb = claim }
    }
    else_if = {
        limit = { qyv_ai_has_de_jure_cb = root }
        declare_war = { target = scope:de_jure_target cb = de_jure }
    }
    else_if = {
        limit = { qyv_ai_has_holy_war_cb = root }
        declare_war = { target = scope:holy_war_target cb = holy_war }
    }
    else_if = {
        limit = { qyv_ai_has_conquest_cb = root }
        declare_war = { target = scope:conquest_target cb = conquest }
    }
}

# MAA Optimization for Strategy
qyv_ai_optimize_maa_for_expansion = {
    if = {
        limit = {
            qyv_strat_expansion = root
            gold >= 1000
            NOT = { in_debt = yes }
        }
        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 }
    }
}

qyv_ai_optimize_maa_for_defense = {
    if = {
        limit = {
            qyv_strat_consolidation = root
            gold >= 500
            NOT = { in_debt = yes }
        }
        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_heavy_infantry = root } qyv_ai_raise_heavy_infantry = yes }
    }
}

qyv_ai_cleanup_maa = {
    if = { limit = { qyv_ai_should_disband_expensive_maa = root } qyv_ai_disband_expensive_maa = yes }
    if = { limit = { qyv_ai_should_disband_unused_maa = root } qyv_ai_disband_unused_maa = yes }
}
# ============================================================
# MILITARY COORDINATION & JOIN BIGGER POWERS (v1.20.13)
# ============================================================

# --- Military Unit Coordination ---
# AI should not move armies separately; wait for allies to group
qyv_ai_coordinate_armies = {
    effect = {
        if = {
            limit = {
                qyv_ai_should_coordinate_armies = root
            }
            root = {
                set_character_flag = qyv_armies_coordinating
            }
        }
    }
}

# AI should keep armies in supply territory when not moving
qyv_ai_concentrate_forces = {
    effect = {
        if = {
            limit = {
                qyv_ai_should_concentrate_forces = root
            }
            root = {
                set_character_flag = qyv_forces_concentrating
            }
        }
    }
}

# --- Professional vs Peasant Army ---
# Professional soldiers should be the main standing army
qyv_ai_prioritize_professional = {
    effect = {
        if = {
            limit = {
                qyv_ai_should_prioritize_professional = root
            }
            root = {
                set_character_flag = qyv_professional_priority
            }
        }
    }
}

# Peasant armies as buffer zone only
qyv_ai_demobilize_peasants = {
    effect = {
        if = {
            limit = {
                qyv_ai_should_demobilize_peasants = root
            }
            root = {
                set_character_flag = qyv_peasants_demobilized
            }
        }
    }
}

# --- Join Bigger Powers ---
# Small nations should join nearby powerful realms
qyv_ai_join_bigger_power = {
    effect = {
        if = {
            limit = {
                qyv_ai_should_join_bigger_power = root
            }
            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
                    }
                }
                save_scope_as = powerful_neighbor
            }
            if = {
                limit = { exists = scope:powerful_neighbor }
                scope:powerful_neighbor = {
                    ai_diplomacy_stance = { target = root stance = friend }
                }
                root = {
                    set_character_flag = qyv_joining_bigger_power
                }
            }
        }
    }
}

# Small nations should swear fealty to nearby powerful realms
qyv_ai_swear_fealty = {
    effect = {
        if = {
            limit = {
                qyv_ai_should_swear_fealty = root
            }
            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
                    }
                }
                save_scope_as = liege_candidate
            }
            if = {
                limit = { exists = scope:liege_candidate }
                root = {
                    set_character_flag = qyv_swear_fealty_candidate
                }
            }
        }
    }
}

# Confederation for small nations
qyv_ai_form_confederation = {
    effect = {
        if = {
            limit = {
                qyv_ai_should_form_confederation = root
            }
            root = {
                set_character_flag = qyv_forming_confederation
            }
        }
    }
}

# ============================================================
# RAIDING EXPANSION EFFECTS (v1.20.14)
# ============================================================

# --- Raiding Strategy ---
# AI raids as deliberate economic strategy
qyv_ai_raid_strategically = {
    effect = {
        if = {
            limit = {
                qyv_ai_should_raid_strategically = root
            }
            any_neighbor_independent_ruler = {
                limit = {
                    NOT = { is_allied_to = root }
                    NOT = { has_truce_with = root }
                    NOT = { is_vassal_of = root }
                    NOT = { is_liege_of = root }
                }
                save_scope_as = raid_target
            }
            if = {
                limit = { exists = scope:raid_target }
                scope:raid_target = {
                    set_character_flag = qyv_raid_target
                }
                root = {
                    set_character_flag = qyv_raiding_strategically
                }
            }
        }
    }
}

# --- Raiding Coordination ---
# AI coordinates raids with wars
qyv_ai_coordinate_raids = {
    effect = {
        if = {
            limit = {
                qyv_ai_should_coordinate_raids = root
            }
            root = {
                set_character_flag = qyv_raiding_to_fund_war
            }
        }
    }
}

# --- Raiding Diplomacy ---
# AI evaluates raid risk vs reward
qyv_ai_evaluate_raid_risk = {
    effect = {
        if = {
            limit = {
                qyv_ai_raid_risk_reward = root
            }
            any_neighbor_independent_ruler = {
                limit = {
                    NOT = { is_allied_to = root }
                    NOT = { has_truce_with = root }
                    gold >= 300
                    military_strength < root.military_strength * 3.0
                }
                save_scope_as = raid_risk_target
            }
            if = {
                limit = { exists = scope:raid_risk_target }
                scope:raid_risk_target = {
                    set_character_flag = qyv_raid_risk_evaluated
                }
            }
        }
    }
}

# --- Raiding Army ---
# AI raises specialized raiding parties
qyv_ai_raise_raid_party = {
    effect = {
        if = {
            limit = {
                qyv_ai_should_raise_raid_party = root
            }
            root = {
                set_character_flag = qyv_raid_party_raised
            }
        }
    }
}

# --- Raiding Settlements ---
# AI targets specific settlement types
qyv_ai_target_settlement = {
    effect = {
        if = {
            limit = {
                qyv_ai_should_target_settlement = root
            }
            any_neighbor_independent_ruler = {
                limit = {
                    NOT = { is_allied_to = root }
                    NOT = { has_truce_with = root }
                    any_realm_province = {
                        limit = {
                            OR = {
                                has_building = market_villages
                                has_building = trade_port
                                has_building = farms
                                has_building = mines
                            }
                        }
                    }
                }
                save_scope_as = settlement_raid_target
            }
            if = {
                limit = { exists = scope:settlement_raid_target }
                scope:settlement_raid_target = {
                    set_character_flag = qyv_settlement_raid_target
                }
            }
        }
    }
}

# --- Anti-Raiding Defense ---
# AI builds defenses against raids
qyv_ai_build_anti_raid = {
    effect = {
        if = {
            limit = {
                qyv_ai_should_build_anti_raid = root
            }
            any_realm_province = {
                limit = {
                    is_border_province = yes
                    NOT = { has_building = fort_1 }
                    NOT = { has_building = fort_2 }
                    NOT = { has_building = fort_3 }
                }
                save_scope_as = anti_raid_province
            }
            if = {
                limit = { exists = scope:anti_raid_province }
                scope:anti_raid_province = {
                    holding = { build_building = fort_1 }
                }
            }
        }
    }
}

# --- Vassal Punishment ---
# AI raids disloyal vassals
qyv_ai_raid_vassal = {
    effect = {
        if = {
            limit = {
                qyv_ai_should_raid_vassal = root
            }
            any_vassal = {
                limit = {
                    opinion_of_liege < -20
                    NOT = { is_ally = root }
                }
                save_scope_as = vassal_raid_target
            }
            if = {
                limit = { exists = scope:vassal_raid_target }
                scope:vassal_raid_target = {
                    set_character_flag = qyv_vassal_raid_target
                }
            }
        }
    }
}

# --- Truce Exploitation ---
# AI raids during truces
qyv_ai_raid_during_truce = {
    effect = {
        if = {
            limit = {
                qyv_ai_should_raid_during_truce = root
            }
            any_neighbor_independent_ruler = {
                limit = {
                    has_truce_with = root
                    NOT = { is_allied_to = root }
                    gold >= 300
                }
                save_scope_as = truce_raid_target
            }
            if = {
                limit = { exists = scope:truce_raid_target }
                scope:truce_raid_target = {
                    set_character_flag = qyv_truce_raid_target
                }
            }
        }
    }
}
