namespace = qyv_ai_dread

# ============================================================
# QUARTERLY: DREAD ASSESSMENT & GENERATION
# ============================================================

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

    trigger = {
        is_ai = yes
        is_ruler = yes
    }

    mean_time_to_happen = { months = 3 }

    immediate = {
        # Generate dread when needed
        if = {
            limit = { qyv_ai_should_generate_dread = root }
            qyv_ai_generate_dread = yes
        }

        # Generate dread via events when critically low
        if = {
            limit = { qyv_ai_should_generate_dread_via_events = root }
            qyv_ai_generate_dread_via_events = yes
        }

        # Acquire dread traits when needed
        if = {
            limit = { qyv_ai_should_acquire_dread_traits = root }
            if = { limit = { NOT = { has_trait = cruel } } qyv_ai_acquire_cruel_trait = yes }
            else_if = { limit = { NOT = { has_trait = sadistic } } qyv_ai_acquire_sadistic_trait = yes }
            else_if = { limit = { NOT = { has_trait = impaler } } qyv_ai_acquire_impaler_trait = yes }
        }

        # Acquire just trait when dread too high
        if = {
            limit = { qyv_ai_should_acquire_just_trait = root }
            qyv_ai_acquire_just_trait = yes
        }
    }

    option = { name = "OK" }
}

# ============================================================
# MONTHLY: EXECUTIONS & IMPRISONMENT
# ============================================================

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

    trigger = {
        is_ai = yes
        is_ruler = yes
        has_prisoner = yes
    }

    mean_time_to_happen = { months = 1 }

    immediate = {
        # Execute traitors
        if = {
            limit = { qyv_ai_should_execute_traitor = root }
            qyv_ai_execute_traitor = yes
        }

        # Execute rival claimants
        if = {
            limit = { qyv_ai_should_execute_rival_claimant = root }
            qyv_ai_execute_rival_claimant = yes
        }

        # Execute incompetent heir
        if = {
            limit = { qyv_ai_should_execute_incompetent_heir = root }
            qyv_ai_execute_incompetent_heir = yes
        }

        # Torture for hooks
        if = {
            limit = { qyv_ai_should_torture_for_hook = root }
            qyv_ai_torture_for_hook = yes
        }

        # Imprison powerful faction leaders
        if = {
            limit = { qyv_ai_should_imprison_vassal = root }
            qyv_ai_imprison_vassal = yes
        }
    }

    option = { name = "OK" }
}

# ============================================================
# QUARTERLY: TITLE REVOCATION & TYRANNY
# ============================================================

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

    trigger = {
        is_ai = yes
        is_ruler = yes
        dread >= 30
    }

    mean_time_to_happen = { months = 3 }

    immediate = {
        # Revoke titles from traitorous powerful vassals
        if = {
            limit = { qyv_ai_should_revoke_title = root }
            qyv_ai_revoke_title = yes
        }

        # Accept tyranny for obedience
        if = {
            limit = { qyv_ai_should_accept_tyranny = root }
            qyv_ai_accept_tyranny = yes
        }
    }

    option = { name = "OK" }
}

# ============================================================
# QUARTERLY: HOOK USAGE FOR OBEDIENCE
# ============================================================

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

    trigger = {
        is_ai = yes
        is_ruler = yes
    }

    mean_time_to_happen = { months = 3 }

    immediate = {
        # Use hooks for obedience
        if = { limit = { qyv_ai_should_use_hook_for_obedience = root } qyv_ai_use_hook_for_obedience = yes }
        if = { limit = { qyv_ai_should_demand_council_via_hook = root } qyv_ai_use_hook_for_council = yes }
        if = { limit = { qyv_ai_should_demand_gold_via_hook = root } qyv_ai_use_hook_for_gold = yes }
        if = { limit = { qyv_ai_should_demand_levies_via_hook = root } qyv_ai_use_hook_for_levies = yes }
    }

    option = { name = "OK" }
}

# ============================================================
# QUARTERLY: DREAD BALANCING
# ============================================================

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

    trigger = {
        is_ai = yes
        is_ruler = yes
    }

    mean_time_to_happen = { months = 3 }

    immediate = {
        # Generate dread when critically low
        if = {
            limit = { qyv_ai_should_generate_dread_via_events = root }
            qyv_ai_generate_dread_via_events = yes
        }

        # Acquire dread traits
        if = {
            limit = { qyv_ai_should_acquire_dread_traits = root }
            if = { limit = { NOT = { has_trait = cruel } } qyv_ai_acquire_cruel_trait = yes }
            else_if = { limit = { NOT = { has_trait = sadistic } } qyv_ai_acquire_sadistic_trait = yes }
            else_if = { limit = { NOT = { has_trait = impaler } } qyv_ai_acquire_impaler_trait = yes }
        }

        # Acquire just trait when dread too high
        if = {
            limit = { qyv_ai_should_acquire_just_trait = root }
            qyv_ai_acquire_just_trait = yes
        }

        # Reduce dread when too high
        if = {
            limit = { qyv_ai_should_reduce_dread = root }
            qyv_ai_reduce_dread = yes
        }

        # Acquire compassionate/forgiving when reducing dread
        if = {
            limit = {
                qyv_ai_should_reduce_dread = root
                NOT = { has_trait = compassionate }
            }
            qyv_ai_acquire_compassionate_trait = yes
        }
        else_if = {
            limit = {
                qyv_ai_should_reduce_dread = root
                NOT = { has_trait = forgiving }
            }
            qyv_ai_acquire_forgiving_trait = yes
        }
    }

    option = { name = "OK" }
}

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

on_actions = {
    on_monthly_pulse = { events = { qyv_dread.0200 } }
    on_quarterly_pulse = { events = { qyv_dread.0100 qyv_dread.0300 qyv_dread.0400 qyv_dread.0500 } }
}