﻿
# 2.6.59 — Inner Household and public Trophy status.
# Maintenance is bounded to the player's existing Devotion/Trophy registries.

domcom_prepare_inner_household_effect = {
    save_scope_as = domcom_inner_patron
    clear_variable_list = domcom_ui_inner_candidates

    if = {
        limit = { has_variable_list = domcom_tantalized_registry }
        ordered_in_list = {
            variable = domcom_tantalized_registry
            order_by = { value = var:domcom_obedience multiply = -1 }
            limit = {
                is_alive = yes
               
                has_variable = domcom_obedience
                var:domcom_obedience >= 600
                has_variable = domcom_obedience_patron
                var:domcom_obedience_patron = scope:domcom_inner_patron
            }
            max = 50
            check_range_bounds = no
            save_temporary_scope_as = domcom_inner_candidate
            scope:domcom_inner_patron = {
                add_to_variable_list = { name = domcom_ui_inner_candidates target = scope:domcom_inner_candidate }
            }
        }
    }
    if = { limit = { NOT = { has_variable = domcom_inner_selected_role } } set_variable = { name = domcom_inner_selected_role value = flag:diplomat } }
    domcom_refresh_inner_household_effect = yes
}

domcom_clear_inner_role_modifiers_effect = {
    remove_character_modifier = domcom_inner_diplomat_1_modifier
    remove_character_modifier = domcom_inner_diplomat_2_modifier
    remove_character_modifier = domcom_inner_diplomat_3_modifier
    remove_character_modifier = domcom_inner_steward_1_modifier
    remove_character_modifier = domcom_inner_steward_2_modifier
    remove_character_modifier = domcom_inner_steward_3_modifier
    remove_character_modifier = domcom_inner_schemer_1_modifier
    remove_character_modifier = domcom_inner_schemer_2_modifier
    remove_character_modifier = domcom_inner_schemer_3_modifier
    remove_character_modifier = domcom_inner_scholar_1_modifier
    remove_character_modifier = domcom_inner_scholar_2_modifier
    remove_character_modifier = domcom_inner_scholar_3_modifier
    remove_character_modifier = domcom_inner_champion_1_modifier
    remove_character_modifier = domcom_inner_champion_2_modifier
    remove_character_modifier = domcom_inner_champion_3_modifier
}

# One candidate can hold only one seat. Run from Patron with scope:target saved.
domcom_remove_inner_target_from_other_roles_effect = {
    if = { limit = { has_variable = domcom_inner_diplomat_holder var:domcom_inner_diplomat_holder = scope:target } remove_variable = domcom_inner_diplomat_holder remove_variable = domcom_inner_diplomat_tier }
    if = { limit = { has_variable = domcom_inner_steward_holder var:domcom_inner_steward_holder = scope:target } remove_variable = domcom_inner_steward_holder remove_variable = domcom_inner_steward_tier }
    if = { limit = { has_variable = domcom_inner_schemer_holder var:domcom_inner_schemer_holder = scope:target } remove_variable = domcom_inner_schemer_holder remove_variable = domcom_inner_schemer_tier }
    if = { limit = { has_variable = domcom_inner_scholar_holder var:domcom_inner_scholar_holder = scope:target } remove_variable = domcom_inner_scholar_holder remove_variable = domcom_inner_scholar_tier }
    if = { limit = { has_variable = domcom_inner_champion_holder var:domcom_inner_champion_holder = scope:target } remove_variable = domcom_inner_champion_holder remove_variable = domcom_inner_champion_tier }
}

# Auto-assignment uses a temporary scope rather than the GUI row target.
domcom_remove_inner_best_from_other_roles_effect = {
    if = { limit = { has_variable = domcom_inner_diplomat_holder var:domcom_inner_diplomat_holder = scope:domcom_inner_best } remove_variable = domcom_inner_diplomat_holder remove_variable = domcom_inner_diplomat_tier }
    if = { limit = { has_variable = domcom_inner_steward_holder var:domcom_inner_steward_holder = scope:domcom_inner_best } remove_variable = domcom_inner_steward_holder remove_variable = domcom_inner_steward_tier }
    if = { limit = { has_variable = domcom_inner_schemer_holder var:domcom_inner_schemer_holder = scope:domcom_inner_best } remove_variable = domcom_inner_schemer_holder remove_variable = domcom_inner_schemer_tier }
    if = { limit = { has_variable = domcom_inner_scholar_holder var:domcom_inner_scholar_holder = scope:domcom_inner_best } remove_variable = domcom_inner_scholar_holder remove_variable = domcom_inner_scholar_tier }
    if = { limit = { has_variable = domcom_inner_champion_holder var:domcom_inner_champion_holder = scope:domcom_inner_best } remove_variable = domcom_inner_champion_holder remove_variable = domcom_inner_champion_tier }
}

# Validate seats, compute their tiers, and only swap modifiers when a tier actually changes.
domcom_refresh_inner_household_effect = {
    if = { limit = { NOT = { has_variable = domcom_inner_diplomat_holder } } remove_variable = domcom_inner_diplomat_tier remove_character_modifier = domcom_inner_diplomat_1_modifier remove_character_modifier = domcom_inner_diplomat_2_modifier remove_character_modifier = domcom_inner_diplomat_3_modifier }
    if = { limit = { NOT = { has_variable = domcom_inner_steward_holder } } remove_variable = domcom_inner_steward_tier remove_character_modifier = domcom_inner_steward_1_modifier remove_character_modifier = domcom_inner_steward_2_modifier remove_character_modifier = domcom_inner_steward_3_modifier }
    if = { limit = { NOT = { has_variable = domcom_inner_schemer_holder } } remove_variable = domcom_inner_schemer_tier remove_character_modifier = domcom_inner_schemer_1_modifier remove_character_modifier = domcom_inner_schemer_2_modifier remove_character_modifier = domcom_inner_schemer_3_modifier }
    if = { limit = { NOT = { has_variable = domcom_inner_scholar_holder } } remove_variable = domcom_inner_scholar_tier remove_character_modifier = domcom_inner_scholar_1_modifier remove_character_modifier = domcom_inner_scholar_2_modifier remove_character_modifier = domcom_inner_scholar_3_modifier }
    if = { limit = { NOT = { has_variable = domcom_inner_champion_holder } } remove_variable = domcom_inner_champion_tier remove_character_modifier = domcom_inner_champion_1_modifier remove_character_modifier = domcom_inner_champion_2_modifier remove_character_modifier = domcom_inner_champion_3_modifier }
    # Diplomat
    if = {
        limit = {
            has_variable = domcom_inner_diplomat_holder
            NOT = { var:domcom_inner_diplomat_holder = { is_alive = yes has_variable = domcom_obedience var:domcom_obedience >= 600 has_variable = domcom_obedience_patron var:domcom_obedience_patron = root } }
        }
        remove_variable = domcom_inner_diplomat_holder
        remove_variable = domcom_inner_diplomat_tier
        remove_character_modifier = domcom_inner_diplomat_1_modifier
        remove_character_modifier = domcom_inner_diplomat_2_modifier
        remove_character_modifier = domcom_inner_diplomat_3_modifier
    }
    if = {
        limit = { has_variable = domcom_inner_diplomat_holder }
        if = {
            limit = { var:domcom_inner_diplomat_holder = { diplomacy >= 25 has_variable = domcom_obedience var:domcom_obedience >= 1000 } OR = { NOT = { has_variable = domcom_inner_diplomat_tier } var:domcom_inner_diplomat_tier != 3 } }
            remove_character_modifier = domcom_inner_diplomat_1_modifier
            remove_character_modifier = domcom_inner_diplomat_2_modifier
            remove_character_modifier = domcom_inner_diplomat_3_modifier
            add_character_modifier = domcom_inner_diplomat_3_modifier
            set_variable = { name = domcom_inner_diplomat_tier value = 3 }
        }
        else_if = {
            limit = { var:domcom_inner_diplomat_holder = { diplomacy >= 15 has_variable = domcom_obedience var:domcom_obedience >= 800 } OR = { NOT = { has_variable = domcom_inner_diplomat_tier } var:domcom_inner_diplomat_tier != 2 } }
            remove_character_modifier = domcom_inner_diplomat_1_modifier
            remove_character_modifier = domcom_inner_diplomat_2_modifier
            remove_character_modifier = domcom_inner_diplomat_3_modifier
            add_character_modifier = domcom_inner_diplomat_2_modifier
            set_variable = { name = domcom_inner_diplomat_tier value = 2 }
        }
        else_if = {
            limit = { OR = { NOT = { has_variable = domcom_inner_diplomat_tier } var:domcom_inner_diplomat_tier != 1 } }
            remove_character_modifier = domcom_inner_diplomat_1_modifier
            remove_character_modifier = domcom_inner_diplomat_2_modifier
            remove_character_modifier = domcom_inner_diplomat_3_modifier
            add_character_modifier = domcom_inner_diplomat_1_modifier
            set_variable = { name = domcom_inner_diplomat_tier value = 1 }
        }
    }

    # Steward
    if = {
        limit = { has_variable = domcom_inner_steward_holder NOT = { var:domcom_inner_steward_holder = { is_alive = yes has_variable = domcom_obedience var:domcom_obedience >= 600 has_variable = domcom_obedience_patron var:domcom_obedience_patron = root } } }
        remove_variable = domcom_inner_steward_holder remove_variable = domcom_inner_steward_tier
        remove_character_modifier = domcom_inner_steward_1_modifier remove_character_modifier = domcom_inner_steward_2_modifier remove_character_modifier = domcom_inner_steward_3_modifier
    }
    if = {
        limit = { has_variable = domcom_inner_steward_holder }
        if = { limit = { var:domcom_inner_steward_holder = { stewardship >= 25 has_variable = domcom_obedience var:domcom_obedience >= 1000 } OR = { NOT = { has_variable = domcom_inner_steward_tier } var:domcom_inner_steward_tier != 3 } } remove_character_modifier = domcom_inner_steward_1_modifier remove_character_modifier = domcom_inner_steward_2_modifier remove_character_modifier = domcom_inner_steward_3_modifier add_character_modifier = domcom_inner_steward_3_modifier set_variable = { name = domcom_inner_steward_tier value = 3 } }
        else_if = { limit = { var:domcom_inner_steward_holder = { stewardship >= 15 has_variable = domcom_obedience var:domcom_obedience >= 800 } OR = { NOT = { has_variable = domcom_inner_steward_tier } var:domcom_inner_steward_tier != 2 } } remove_character_modifier = domcom_inner_steward_1_modifier remove_character_modifier = domcom_inner_steward_2_modifier remove_character_modifier = domcom_inner_steward_3_modifier add_character_modifier = domcom_inner_steward_2_modifier set_variable = { name = domcom_inner_steward_tier value = 2 } }
        else_if = { limit = { OR = { NOT = { has_variable = domcom_inner_steward_tier } var:domcom_inner_steward_tier != 1 } } remove_character_modifier = domcom_inner_steward_1_modifier remove_character_modifier = domcom_inner_steward_2_modifier remove_character_modifier = domcom_inner_steward_3_modifier add_character_modifier = domcom_inner_steward_1_modifier set_variable = { name = domcom_inner_steward_tier value = 1 } }
    }

    # Schemer
    if = {
        limit = { has_variable = domcom_inner_schemer_holder NOT = { var:domcom_inner_schemer_holder = { is_alive = yes has_variable = domcom_obedience var:domcom_obedience >= 600 has_variable = domcom_obedience_patron var:domcom_obedience_patron = root } } }
        remove_variable = domcom_inner_schemer_holder remove_variable = domcom_inner_schemer_tier
        remove_character_modifier = domcom_inner_schemer_1_modifier remove_character_modifier = domcom_inner_schemer_2_modifier remove_character_modifier = domcom_inner_schemer_3_modifier
    }
    if = {
        limit = { has_variable = domcom_inner_schemer_holder }
        if = { limit = { var:domcom_inner_schemer_holder = { intrigue >= 25 has_variable = domcom_obedience var:domcom_obedience >= 1000 } OR = { NOT = { has_variable = domcom_inner_schemer_tier } var:domcom_inner_schemer_tier != 3 } } remove_character_modifier = domcom_inner_schemer_1_modifier remove_character_modifier = domcom_inner_schemer_2_modifier remove_character_modifier = domcom_inner_schemer_3_modifier add_character_modifier = domcom_inner_schemer_3_modifier set_variable = { name = domcom_inner_schemer_tier value = 3 } }
        else_if = { limit = { var:domcom_inner_schemer_holder = { intrigue >= 15 has_variable = domcom_obedience var:domcom_obedience >= 800 } OR = { NOT = { has_variable = domcom_inner_schemer_tier } var:domcom_inner_schemer_tier != 2 } } remove_character_modifier = domcom_inner_schemer_1_modifier remove_character_modifier = domcom_inner_schemer_2_modifier remove_character_modifier = domcom_inner_schemer_3_modifier add_character_modifier = domcom_inner_schemer_2_modifier set_variable = { name = domcom_inner_schemer_tier value = 2 } }
        else_if = { limit = { OR = { NOT = { has_variable = domcom_inner_schemer_tier } var:domcom_inner_schemer_tier != 1 } } remove_character_modifier = domcom_inner_schemer_1_modifier remove_character_modifier = domcom_inner_schemer_2_modifier remove_character_modifier = domcom_inner_schemer_3_modifier add_character_modifier = domcom_inner_schemer_1_modifier set_variable = { name = domcom_inner_schemer_tier value = 1 } }
    }

    # Scholar
    if = {
        limit = { has_variable = domcom_inner_scholar_holder NOT = { var:domcom_inner_scholar_holder = { is_alive = yes has_variable = domcom_obedience var:domcom_obedience >= 600 has_variable = domcom_obedience_patron var:domcom_obedience_patron = root } } }
        remove_variable = domcom_inner_scholar_holder remove_variable = domcom_inner_scholar_tier
        remove_character_modifier = domcom_inner_scholar_1_modifier remove_character_modifier = domcom_inner_scholar_2_modifier remove_character_modifier = domcom_inner_scholar_3_modifier
    }
    if = {
        limit = { has_variable = domcom_inner_scholar_holder }
        if = { limit = { var:domcom_inner_scholar_holder = { learning >= 25 has_variable = domcom_obedience var:domcom_obedience >= 1000 } OR = { NOT = { has_variable = domcom_inner_scholar_tier } var:domcom_inner_scholar_tier != 3 } } remove_character_modifier = domcom_inner_scholar_1_modifier remove_character_modifier = domcom_inner_scholar_2_modifier remove_character_modifier = domcom_inner_scholar_3_modifier add_character_modifier = domcom_inner_scholar_3_modifier set_variable = { name = domcom_inner_scholar_tier value = 3 } }
        else_if = { limit = { var:domcom_inner_scholar_holder = { learning >= 15 has_variable = domcom_obedience var:domcom_obedience >= 800 } OR = { NOT = { has_variable = domcom_inner_scholar_tier } var:domcom_inner_scholar_tier != 2 } } remove_character_modifier = domcom_inner_scholar_1_modifier remove_character_modifier = domcom_inner_scholar_2_modifier remove_character_modifier = domcom_inner_scholar_3_modifier add_character_modifier = domcom_inner_scholar_2_modifier set_variable = { name = domcom_inner_scholar_tier value = 2 } }
        else_if = { limit = { OR = { NOT = { has_variable = domcom_inner_scholar_tier } var:domcom_inner_scholar_tier != 1 } } remove_character_modifier = domcom_inner_scholar_1_modifier remove_character_modifier = domcom_inner_scholar_2_modifier remove_character_modifier = domcom_inner_scholar_3_modifier add_character_modifier = domcom_inner_scholar_1_modifier set_variable = { name = domcom_inner_scholar_tier value = 1 } }
    }

    # Champion: Martial is the governing skill; Prowess is displayed to the player and still matters elsewhere.
    if = {
        limit = { has_variable = domcom_inner_champion_holder NOT = { var:domcom_inner_champion_holder = { is_alive = yes has_variable = domcom_obedience var:domcom_obedience >= 600 has_variable = domcom_obedience_patron var:domcom_obedience_patron = root } } }
        remove_variable = domcom_inner_champion_holder remove_variable = domcom_inner_champion_tier
        remove_character_modifier = domcom_inner_champion_1_modifier remove_character_modifier = domcom_inner_champion_2_modifier remove_character_modifier = domcom_inner_champion_3_modifier
    }
    if = {
        limit = { has_variable = domcom_inner_champion_holder }
        if = { limit = { var:domcom_inner_champion_holder = { martial >= 25 has_variable = domcom_obedience var:domcom_obedience >= 1000 } OR = { NOT = { has_variable = domcom_inner_champion_tier } var:domcom_inner_champion_tier != 3 } } remove_character_modifier = domcom_inner_champion_1_modifier remove_character_modifier = domcom_inner_champion_2_modifier remove_character_modifier = domcom_inner_champion_3_modifier add_character_modifier = domcom_inner_champion_3_modifier set_variable = { name = domcom_inner_champion_tier value = 3 } }
        else_if = { limit = { var:domcom_inner_champion_holder = { martial >= 15 has_variable = domcom_obedience var:domcom_obedience >= 800 } OR = { NOT = { has_variable = domcom_inner_champion_tier } var:domcom_inner_champion_tier != 2 } } remove_character_modifier = domcom_inner_champion_1_modifier remove_character_modifier = domcom_inner_champion_2_modifier remove_character_modifier = domcom_inner_champion_3_modifier add_character_modifier = domcom_inner_champion_2_modifier set_variable = { name = domcom_inner_champion_tier value = 2 } }
        else_if = { limit = { OR = { NOT = { has_variable = domcom_inner_champion_tier } var:domcom_inner_champion_tier != 1 } } remove_character_modifier = domcom_inner_champion_1_modifier remove_character_modifier = domcom_inner_champion_2_modifier remove_character_modifier = domcom_inner_champion_3_modifier add_character_modifier = domcom_inner_champion_1_modifier set_variable = { name = domcom_inner_champion_tier value = 1 } }
    }

    set_variable = { name = domcom_inner_filled_count value = 0 }
    if = { limit = { has_variable = domcom_inner_diplomat_holder } change_variable = { name = domcom_inner_filled_count add = 1 } }
    if = { limit = { has_variable = domcom_inner_steward_holder } change_variable = { name = domcom_inner_filled_count add = 1 } }
    if = { limit = { has_variable = domcom_inner_schemer_holder } change_variable = { name = domcom_inner_filled_count add = 1 } }
    if = { limit = { has_variable = domcom_inner_scholar_holder } change_variable = { name = domcom_inner_filled_count add = 1 } }
    if = { limit = { has_variable = domcom_inner_champion_holder } change_variable = { name = domcom_inner_filled_count add = 1 } }
}

domcom_inner_household_monthly_effect = {
    domcom_refresh_inner_household_effect = yes
}

# Public Trophy: a deliberate player choice for a Devoted woman, not an automatic Devotion side effect.
domcom_designate_trophy_effect = {
    save_scope_as = domcom_trophy_subject
    scope:domcom_trophy_patron = { save_scope_as = domcom_trophy_owner }
    add_character_flag = domcom_public_trophy
    set_variable = { name = domcom_trophy_patron value = scope:domcom_trophy_patron }
    if = { limit = { NOT = { has_character_modifier = domcom_public_trophy_modifier } } add_character_modifier = domcom_public_trophy_modifier }
    every_spouse = {
        limit = { NOT = { this = scope:domcom_trophy_patron } }
        add_opinion = { target = scope:domcom_trophy_patron modifier = domcom_trophy_displaced_opinion }
    }
    scope:domcom_trophy_patron = {
        add_to_variable_list = { name = domcom_trophy_registry target = scope:domcom_trophy_subject }
        domcom_refresh_trophy_registry_effect = yes
    }
}

domcom_end_trophy_effect = {
    save_scope_as = domcom_trophy_subject
    if = {
        limit = { has_variable = domcom_trophy_patron }
        var:domcom_trophy_patron = { save_scope_as = domcom_trophy_patron }
        every_spouse = {
            limit = { NOT = { this = scope:domcom_trophy_patron } }
            remove_opinion = { target = scope:domcom_trophy_patron modifier = domcom_trophy_displaced_opinion }
        }
        scope:domcom_trophy_patron = {
            if = { limit = { has_variable_list = domcom_trophy_registry } remove_list_variable = { name = domcom_trophy_registry target = scope:domcom_trophy_subject } }
        }
    }
    remove_character_flag = domcom_public_trophy
    remove_variable = domcom_trophy_patron
    remove_character_modifier = domcom_public_trophy_modifier
    if = { limit = { exists = scope:domcom_trophy_patron } scope:domcom_trophy_patron = { domcom_refresh_trophy_registry_effect = yes } }
}

domcom_refresh_trophy_registry_effect = {
    save_scope_as = domcom_trophy_owner
    set_variable = { name = domcom_trophy_count value = 0 }
    if = {
        limit = { has_variable_list = domcom_trophy_registry }
        every_in_list = {
            variable = domcom_trophy_registry
            limit = { is_alive = yes has_character_flag = domcom_public_trophy has_variable = domcom_trophy_patron var:domcom_trophy_patron = scope:domcom_trophy_owner }
            every_spouse = {
                limit = { NOT = { this = scope:domcom_trophy_owner } }
                add_opinion = { target = scope:domcom_trophy_owner modifier = domcom_trophy_displaced_opinion }
            }
            scope:domcom_trophy_owner = { change_variable = { name = domcom_trophy_count add = 1 } }
        }
    }
    if = {
        limit = { var:domcom_trophy_count > 0 }
        if = { limit = { NOT = { has_character_modifier = domcom_trophy_patron_modifier } } add_character_modifier = domcom_trophy_patron_modifier }
    }
    else = { remove_character_modifier = domcom_trophy_patron_modifier }
}

domcom_trophy_on_death_cleanup_effect = {
    # If the dead character was a Patron, their public Trophy statuses end with them.
    if = {
        limit = { has_variable_list = domcom_trophy_registry }
        save_scope_as = domcom_dead_trophy_patron
        every_in_list = {
            variable = domcom_trophy_registry
            limit = { has_variable = domcom_trophy_patron var:domcom_trophy_patron = scope:domcom_dead_trophy_patron }
            remove_character_flag = domcom_public_trophy
            remove_variable = domcom_trophy_patron
            remove_character_modifier = domcom_public_trophy_modifier
        }
        clear_variable_list = domcom_trophy_registry
        remove_character_modifier = domcom_trophy_patron_modifier
    }
    if = {
        limit = { has_character_flag = domcom_public_trophy has_variable = domcom_trophy_patron }
        save_scope_as = domcom_dead_trophy
        var:domcom_trophy_patron = {
            if = { limit = { has_variable_list = domcom_trophy_registry } remove_list_variable = { name = domcom_trophy_registry target = scope:domcom_dead_trophy } }
            domcom_refresh_trophy_registry_effect = yes
        }
    }
}

domcom_inner_household_on_death_cleanup_effect = {
    if = {
        limit = { has_variable = domcom_obedience_patron }
        save_scope_as = domcom_dead_inner_member
        var:domcom_obedience_patron = {
            if = {
                limit = { is_ai = no }
                if = { limit = { has_variable = domcom_inner_diplomat_holder var:domcom_inner_diplomat_holder = scope:domcom_dead_inner_member } remove_variable = domcom_inner_diplomat_holder remove_variable = domcom_inner_diplomat_tier }
                if = { limit = { has_variable = domcom_inner_steward_holder var:domcom_inner_steward_holder = scope:domcom_dead_inner_member } remove_variable = domcom_inner_steward_holder remove_variable = domcom_inner_steward_tier }
                if = { limit = { has_variable = domcom_inner_schemer_holder var:domcom_inner_schemer_holder = scope:domcom_dead_inner_member } remove_variable = domcom_inner_schemer_holder remove_variable = domcom_inner_schemer_tier }
                if = { limit = { has_variable = domcom_inner_scholar_holder var:domcom_inner_scholar_holder = scope:domcom_dead_inner_member } remove_variable = domcom_inner_scholar_holder remove_variable = domcom_inner_scholar_tier }
                if = { limit = { has_variable = domcom_inner_champion_holder var:domcom_inner_champion_holder = scope:domcom_dead_inner_member } remove_variable = domcom_inner_champion_holder remove_variable = domcom_inner_champion_tier }
                domcom_refresh_inner_household_effect = yes
            }
        }
    }
}
