﻿ # Developer debug decision: decrease realm stability by 10 for testing
    riseandfall_debug_reduce_stability_10 = {
        picture = {
            reference = "gfx/interface/illustrations/decisions/decision_misc.dds"
        }
        sort_order = 100
    ai_check_interval = 0
        desc = riseandfall_debug_reduce_stability_10_desc
        selection_tooltip = riseandfall_debug_reduce_stability_10_tooltip
        decision_group_type = riseandfall

        is_shown = {
            always = no
        }

        is_valid = {
            always = yes
        }

        effect = {
            if = {
                limit = { NOT = { has_variable = riseandfall_realm_stability_score } }
                set_variable = { name = riseandfall_realm_stability_score value = 0 }
            }
            # For debugging, force stability to 0
            set_variable = { name = riseandfall_realm_stability_score value = 0 }
            clamp_variable = { name = riseandfall_realm_stability_score min = 0 max = 100 }
            round_variable = { name = riseandfall_realm_stability_score }
            # Recompute normally (updates target/current smoothing state)
            riseandfall_calculate_realm_stability_se = yes
            # Ensure smoothing/target don't immediately nudge the score away from 0
            set_variable = { name = riseandfall_realm_stability_target value = 0 }
            set_variable = { name = riseandfall_realm_stability_score value = 0 }
            # Reset adjustment months so smoothing won't apply until next tick
            set_variable = { name = riseandfall_rs_adjust_months value = 0 }
            set_variable = { name = riseandfall_realm_stability_predicted_change value = 0 }
        }

        ai_potential = {
        }

        ai_will_do = {
            base = 0
        }
    }

    # Developer debug decision: fire low stability random event for testing
    riseandfall_debug_fire_low_stability_event = {
        picture = {
            reference = "gfx/interface/illustrations/decisions/decision_misc.dds"
        }
        sort_order = 101
    ai_check_interval = 0
        desc = riseandfall_debug_fire_low_stability_event_desc
        selection_tooltip = riseandfall_debug_fire_low_stability_event_tooltip
        decision_group_type = riseandfall

        is_shown = {
            always = no
        }

        is_valid = {
            always = yes
        }

        effect = {
            riseandfall_low_stability_random_event = yes
        }

        ai_potential = {
        }

        ai_will_do = {
            base = 0
        }
    }

    # Developer debug decision: force this character's liege into a palace coup with this character as challenger
    riseandfall_debug_force_liege_palace_coup_player_challenger = {
        picture = {
            reference = "gfx/interface/illustrations/decisions/decision_misc.dds"
        }
        sort_order = 102
        ai_check_interval = 0
        desc = riseandfall_debug_force_liege_palace_coup_player_challenger_desc
        selection_tooltip = riseandfall_debug_force_liege_palace_coup_player_challenger_tooltip
        decision_group_type = riseandfall

        is_shown = {
            debug_only = yes
            is_ai = no
            exists = liege
        }

        is_valid = {
            is_alive = yes
            is_adult = yes
            liege = { is_alive = yes }
        }

        effect = {
            save_scope_as = potential_challenger
            save_scope_as = riseandfall_debug_player_challenger

            liege = {
                save_scope_as = event_root
                clear_saved_scope = challenger

                ordered_courtier_or_guest = {
                    limit = {
                        is_alive = yes
                        age > 16
                        is_ai = yes
                        is_ruler = no
                        NOT = { this = scope:riseandfall_debug_player_challenger }
                        NOT = { is_close_family_of = scope:event_root }
                    }
                    order_by = current_military_strength
                    max = 1
                    save_scope_as = challenger
                }

                if = {
                    limit = { NOT = { exists = scope:challenger } }
                    ordered_vassal = {
                        limit = {
                            is_alive = yes
                            is_councillor = yes
                            is_ai = yes
                            is_ruler = no
                            NOT = { this = scope:riseandfall_debug_player_challenger }
                            NOT = { is_close_family_of = scope:event_root }
                        }
                        order_by = current_military_strength
                        max = 1
                        save_scope_as = challenger
                    }
                }

                # If no AI backup exists, the confirmation event hides Decline.
                if = {
                    limit = { NOT = { exists = scope:challenger } }
                    scope:riseandfall_debug_player_challenger = { save_scope_as = challenger }
                }

                scope:riseandfall_debug_player_challenger = {
                    trigger_event = { id = palace_coup.1101 }
                }
            }
        }

        ai_potential = {
        }

        ai_will_do = {
            base = 0
        }
    }

    # Developer debug decision: turn one random claimant to this ruler's primary title into a legitimist adventurer.
    riseandfall_debug_create_random_legitimist_claimant = {
        picture = {
            reference = "gfx/interface/illustrations/decisions/decision_misc.dds"
        }
        sort_order = 103
        ai_check_interval = 0
        desc = riseandfall_debug_create_random_legitimist_claimant_desc
        selection_tooltip = riseandfall_debug_create_random_legitimist_claimant_tooltip
        decision_group_type = riseandfall

        is_shown = {
            debug_only = yes
            is_ai = no
            is_landed = yes
            exists = primary_title
        }

        is_valid = {
            is_alive = yes
            primary_title = {
                any_claimant = {
                    explicit = all
                    is_alive = yes
                    age >= 16
                    is_landed = no
                    NOT = { has_government = landless_adventurer_government }
                    NOT = { has_character_flag = riseandfall_newadventurer }
                    NOT = { has_trait_with_flag = can_not_marry }
                }
            }
        }

        effect = {
            save_scope_as = independent_ruler
            primary_title = {
                save_scope_as = claim_target_title
                random_claimant = {
                    explicit = all
                    limit = {
                        is_alive = yes
                        age >= 16
                        is_landed = no
                        NOT = { has_government = landless_adventurer_government }
                        NOT = { has_character_flag = riseandfall_newadventurer }
                        NOT = { has_trait_with_flag = can_not_marry }
                    }
                    # Dispatch through a hidden event because the Decisions
                    # tooltip builder expands scripted effects even when the
                    # direct call is nested inside hidden_effect.
                    trigger_event = { id = riseandfall_debug.0001 }
                }
            }
        }

        ai_potential = {
        }

        ai_will_do = {
            base = 0
        }
    }

    # Developer debug decision: set this ruler's Coalition Threat to the maximum.
    riseandfall_debug_set_coalition_threat_100 = {
        picture = {
            reference = "gfx/interface/illustrations/decisions/decision_misc.dds"
        }
        sort_order = 104
        ai_check_interval = 0
        desc = riseandfall_debug_set_coalition_threat_100_desc
        selection_tooltip = riseandfall_debug_set_coalition_threat_100_tooltip
        decision_group_type = riseandfall

        is_shown = {
            debug_only = yes
            is_ai = no
            is_landed = yes
        }

        is_valid = {
            is_alive = yes
        }

        effect = {
            set_variable = { name = rf_coalition_threat value = 100 }
            set_variable = { name = rf_coalition_threat_window_years value = 5 }
            set_variable = { name = rf_coalition_threat_yearly_change value = 0 }
        }

        ai_potential = {
        }

        ai_will_do = {
            base = 0
        }
    }

    # Developer debug decision: create a titular primary title one rank above
    # this ruler's current primary title for Coalition punishment testing.
    riseandfall_debug_create_temporary_higher_title = {
        picture = {
            reference = "gfx/interface/illustrations/decisions/decision_misc.dds"
        }
        sort_order = 105
        ai_check_interval = 0
        desc = riseandfall_debug_create_temporary_higher_title_desc
        selection_tooltip = riseandfall_debug_create_temporary_higher_title_tooltip
        decision_group_type = riseandfall

        is_shown = {
            debug_only = yes
            is_ai = no
            is_landed = yes
            exists = primary_title
            primary_title.tier < tier_hegemony
            NOT = { has_variable = rf_debug_temporary_higher_title }
        }

        is_valid = {
            is_alive = yes
            is_landed = yes
            exists = primary_title
            primary_title.tier < tier_hegemony
        }

        effect = {
            save_scope_as = rf_debug_test_ruler
            # Save the original crown so the paired cleanup decision can restore
            # it before destroying the temporary title.
            primary_title = { save_scope_as = rf_debug_original_primary_title }
            set_variable = {
                name = rf_debug_original_primary_title
                value = scope:rf_debug_original_primary_title
            }
            # The split-realm dynamic naming token reads this saved barony
            # scope when generating the temporary title's display name.
            capital_barony = { save_scope_as = rf_base_capital_barony }

            if = {
                limit = { primary_title.tier = tier_county }
                create_dynamic_title = {
                    tier = duchy
                    name = RISEANDFALL_BREAKAWAY_NAME_CAPITAL
                }
            }
            else_if = {
                limit = { primary_title.tier = tier_duchy }
                create_dynamic_title = {
                    tier = kingdom
                    name = RISEANDFALL_BREAKAWAY_NAME_CAPITAL
                }
            }
            else_if = {
                limit = { primary_title.tier = tier_kingdom }
                create_dynamic_title = {
                    tier = empire
                    name = RISEANDFALL_BREAKAWAY_NAME_CAPITAL
                }
            }
            else_if = {
                limit = { primary_title.tier = tier_empire }
                create_dynamic_title = {
                    tier = hegemony
                    name = RISEANDFALL_BREAKAWAY_NAME_CAPITAL
                }
            }

            if = {
                limit = { exists = scope:new_title }
                scope:new_title = {
                    set_variable = { name = rf_debug_temporary_title value = 1 }
                    save_scope_as = rf_debug_temporary_higher_title
                }
                set_variable = {
                    name = rf_debug_temporary_higher_title
                    value = scope:rf_debug_temporary_higher_title
                }
                create_title_and_vassal_change = {
                    type = created
                    save_scope_as = rf_debug_temporary_title_change
                    add_claim_on_loss = no
                }
                scope:rf_debug_temporary_higher_title = {
                    change_title_holder = {
                        holder = scope:rf_debug_test_ruler
                        change = scope:rf_debug_temporary_title_change
                    }
                }
                resolve_title_and_vassal_change = scope:rf_debug_temporary_title_change
                set_primary_title_to = scope:rf_debug_temporary_higher_title
                # Refresh Coalition core/periphery variables immediately so
                # the debug test can be started without waiting for a pulse.
                riseandfall_coalition_calculate_periphery_se = yes
            }
        }

        ai_potential = {
        }

        ai_will_do = {
            base = 0
        }
    }

    # Developer debug decision: remove the temporary higher title and restore
    # the primary title saved by the creation decision.
    riseandfall_debug_remove_temporary_higher_title = {
        picture = {
            reference = "gfx/interface/illustrations/decisions/decision_misc.dds"
        }
        sort_order = 106
        ai_check_interval = 0
        desc = riseandfall_debug_remove_temporary_higher_title_desc
        selection_tooltip = riseandfall_debug_remove_temporary_higher_title_tooltip
        decision_group_type = riseandfall

        is_shown = {
            debug_only = yes
            is_ai = no
            has_variable = rf_debug_original_primary_title
            has_variable = rf_debug_temporary_higher_title
        }

        is_valid = {
            is_alive = yes
            is_landed = yes
            var:rf_debug_original_primary_title = { holder = root }
            var:rf_debug_temporary_higher_title = { holder = root }
        }

        effect = {
            var:rf_debug_original_primary_title = { save_scope_as = rf_debug_restore_title }
            var:rf_debug_temporary_higher_title = { save_scope_as = rf_debug_remove_title }
            set_primary_title_to = scope:rf_debug_restore_title
            destroy_title = scope:rf_debug_remove_title
            remove_variable = rf_debug_original_primary_title
            remove_variable = rf_debug_temporary_higher_title
        }

        ai_potential = {
        }

        ai_will_do = {
            base = 0
        }
    }
