namespace = qyv_anti_bordergore

# Pulse: AI rulers with fragmented realms prioritize consolidation
character_event = {
    id = qyv_bordergore.0100
    hidden = yes
    is_triggered_only = no

    trigger = {
        is_ai = yes
        is_ruler = yes
        is_independent_ruler = yes
        NOT = { is_at_war = yes }
        NOT = { qyv_realm_is_contiguous = root }
        has_game_rule = { qyv_ai_bordergore_prevention = on }
    }

    mean_time_to_happen = { days = 30 }

    immediate = {
        # Set flag to prioritize consolidation
        set_character_flag = qyv_prioritize_consolidation
        # Remove old claim spam flag if exists
        remove_character_flag = ai_claims_spammed
    }

    option = { name = "OK" }
}

# Pulse: AI at war with fragmented realm seeks white peace
character_event = {
    id = qyv_bordergore.0101
    hidden = yes
    is_triggered_only = no

    trigger = {
        is_ai = yes
        is_ruler = yes
        is_at_war = yes
        war = {
            war_type = conquest
            attacker = { is_ruler = root }
        }
        NOT = { qyv_realm_is_contiguous = root }
        has_game_rule = { qyv_ai_bordergore_prevention = on }
    }

    mean_time_to_happen = { days = 180 }

    immediate = {
        if = {
            limit = { war = { attacker = { is_ruler = root } } }
            war = {
                attacker = {
                    random_occupied_province = {
                        limit = { owner = { is_ruler = root } }
                        owner = { war = { any_casus_belli = { type = claim type = conquest } } }
                        owner = { any_neighbor_province = { owner = { is_ruler = root } } }
                        war = { send_white_peace = yes }
                    }
                }
            }
        }
    }

    option = { name = "OK" }
}

# Pulse: AI evaluates claim quality before fabricating
character_event = {
    id = qyv_bordergore.0200
    hidden = yes
    is_triggered_only = no

    trigger = {
        is_ai = yes
        is_ruler = yes
        is_independent_ruler = yes
        gold >= 500
        prestige >= 150
        NOT = { in_debt = yes }
        NOT = { has_character_flag = ai_claims_spammed }
        NOT = { has_character_flag = qyv_prioritize_consolidation }
        has_game_rule = { qyv_ai_bordergore_prevention = on }
        # Very small realms should not fabricate claims at all - they lack
        # the economy of scale to absorb conquest costs and risk bordergore
        realm_size >= 8
    }

    mean_time_to_happen = { days = 730 }

    immediate = {
        # Only fabricate if it connects to existing realm or is de jure
        if = {
            limit = {
                random_owned_province = {
                    any_neighbor_province = {
                        is_independent_ruler = yes
                        NOT = { is_allied_to = root }
                        NOT = { is_vassal_of = root }
                        NOT = { is_liege_of = root }
                        OR = {
                            qyv_claim_creates_contiguous = { target_province = scope:neighbor }
                            qyv_claim_same_de_jure = { target_province = scope:neighbor }
                            qyv_claim_same_culture = { target_province = scope:neighbor }
                            qyv_claim_same_faith = { target_province = scope:neighbor }
                        }
                        NOT = { qyv_ai_avoids_distant_conquest = { target_province = scope:neighbor } }
                    }
                }
            }
            fabricate_claim_on = scope:neighbor
            set_character_flag = ai_claims_spammed
        }
    }

    option = { name = "OK" }
}

# Yearly: AI with consolidation priority seeks adjacent independent rulers
character_event = {
    id = qyv_bordergore.0300
    hidden = yes
    is_triggered_only = no

    trigger = {
        is_ai = yes
        is_ruler = yes
        is_independent_ruler = yes
        has_character_flag = qyv_prioritize_consolidation
        NOT = { is_at_war = yes }
        gold >= 1000
        prestige >= 250
        NOT = { in_debt = yes }
        has_game_rule = { qyv_ai_bordergore_prevention = on }
        # Small realms consolidating should still not fabricate distant claims
        realm_size >= 8
    }

    mean_time_to_happen = { days = 180 }

    immediate = {
        random_owned_province = {
            any_neighbor_province = {
                is_independent_ruler = yes
                NOT = { is_allied_to = root }
                NOT = { is_vassal_of = root }
                NOT = { is_liege_of = root }
                OR = {
                    qyv_claim_creates_contiguous = { target_province = scope:neighbor }
                    qyv_claim_same_de_jure = { target_province = scope:neighbor }
                    qyv_claim_same_culture = { target_province = scope:neighbor }
                    qyv_claim_same_faith = { target_province = scope:neighbor }
                }
                NOT = { qyv_ai_avoids_distant_conquest = { target_province = scope:neighbor } }
                save_scope_as = target
            }
        }
        if = {
            limit = { exists = scope:target }
            fabricate_claim_on = scope:target
            remove_character_flag = qyv_prioritize_consolidation
            set_character_flag = ai_claims_spammed
        }
        else = {
            remove_character_flag = qyv_prioritize_consolidation
        }
    }

    option = { name = "OK" }
}

# On action: AI declares war only on contiguous/de jure targets
on_actions = {
    on_ai_consider_claim_war = {
        trigger_if = {
            limit = {
                is_ai = yes
                is_ruler = yes
                is_independent_ruler = yes
                NOT = { qyv_realm_is_contiguous = root }
                has_game_rule = { qyv_ai_bordergore_prevention = on }
            }
            qyv_ai_prefers_consolidation = yes
            ai_will_do = { base = 200 }
        }
    }

    on_ai_consider_claim_war = {
        trigger_if = {
            limit = {
                is_ai = yes
                is_ruler = yes
                is_independent_ruler = yes
                qyv_realm_is_contiguous = root
                has_game_rule = { qyv_ai_bordergore_prevention = on }
            }
            OR = {
                qyv_claim_same_de_jure = { target_province = scope:target }
                qyv_claim_same_culture = { target_province = scope:target }
                qyv_claim_same_faith = { target_province = scope:target }
            }
            NOT = { qyv_ai_avoids_distant_conquest = { target_province = scope:target } }
            ai_will_do = { base = 100 }
        }
    }

    # NOTE: minor powers should not attack alone - they lack the economy of
    # scale to sustain a war. This is enforced via the qyv_mil.0400 CB-selection
    # event (events/qyv_ai_military_events.txt) which already gates war declarations
    # on qyv_ai_is_minor_power. The on_ai_consider_claim_war block above is
    # UNVERIFIED syntax (not a vanilla on_action) and is left in for reference
    # but is not relied upon for the minor-power behaviour.
}