﻿# Immediate bridge-presence signal consumed by DDM. No save-state/pulse required.
domcom_csr_ui_available = { scope = character is_shown = { always = yes } }

domcom_csr_ui_refresh = { scope = character effect = { if = { limit = { NOT = { has_variable = domcom_csr_ui_owned_sort } } set_variable = { name = domcom_csr_ui_owned_sort value = 1 } } if = { limit = { NOT = { has_variable = domcom_csr_ui_marriage_sort } } set_variable = { name = domcom_csr_ui_marriage_sort value = 1 } } if = { limit = { NOT = { has_variable = domcom_csr_ui_marriage_slave_sort } } set_variable = { name = domcom_csr_ui_marriage_slave_sort value = 1 } } if = { limit = { NOT = { has_variable = domcom_csr_ui_workforce_filter } } set_variable = { name = domcom_csr_ui_workforce_filter value = flag:all } } domcom_csr_prepare_exchange_buy_effect = yes domcom_csr_prepare_owned_slaves_effect = yes domcom_csr_prepare_marriage_slaves_effect = yes domcom_csr_prepare_workforce_slaves_effect = yes if = { limit = { has_variable = domcom_csr_ui_selected_slave } domcom_csr_prepare_exchange_sell_buyers_effect = yes } if = { limit = { has_variable = domcom_csr_ui_marriage_slave } domcom_csr_prepare_marriage_partners_effect = yes } } }
domcom_csr_ui_page_buy = { scope = character effect = { set_variable = { name = domcom_csr_ui_page value = flag:buy } if = { limit = { NOT = { has_variable = domcom_csr_ui_buy_page } } set_variable = { name = domcom_csr_ui_buy_page value = 0 } } domcom_csr_prepare_exchange_buy_effect = yes } }
domcom_csr_ui_page_sell = { scope = character effect = { set_variable = { name = domcom_csr_ui_page value = flag:sell } if = { limit = { NOT = { has_variable = domcom_csr_ui_owned_page } } set_variable = { name = domcom_csr_ui_owned_page value = 0 } } if = { limit = { NOT = { has_variable = domcom_csr_ui_sell_page } } set_variable = { name = domcom_csr_ui_sell_page value = 0 } } domcom_csr_prepare_owned_slaves_effect = yes if = { limit = { has_variable = domcom_csr_ui_selected_slave } domcom_csr_prepare_exchange_sell_buyers_effect = yes } } }
domcom_csr_ui_page_marriage = { scope = character effect = { set_variable = { name = domcom_csr_ui_page value = flag:marriage } if = { limit = { NOT = { has_variable = domcom_csr_ui_marriage_slave_page } } set_variable = { name = domcom_csr_ui_marriage_slave_page value = 0 } } if = { limit = { NOT = { has_variable = domcom_csr_ui_marriage_partner_page } } set_variable = { name = domcom_csr_ui_marriage_partner_page value = 0 } } domcom_csr_prepare_marriage_slaves_effect = yes if = { limit = { has_variable = domcom_csr_ui_marriage_slave } domcom_csr_prepare_marriage_partners_effect = yes } } }
domcom_csr_ui_page_workforce = { scope = character effect = { set_variable = { name = domcom_csr_ui_page value = flag:workforce } if = { limit = { NOT = { has_variable = domcom_csr_ui_workforce_page } } set_variable = { name = domcom_csr_ui_workforce_page value = 0 } } if = { limit = { NOT = { has_variable = domcom_csr_ui_workforce_filter } } set_variable = { name = domcom_csr_ui_workforce_filter value = flag:all } } domcom_csr_prepare_workforce_slaves_effect = yes } }
domcom_csr_ui_is_buy = { scope = character is_shown = { var:domcom_csr_ui_page = flag:buy } }
domcom_csr_ui_is_sell = { scope = character is_shown = { var:domcom_csr_ui_page = flag:sell } }
domcom_csr_ui_is_marriage = { scope = character is_shown = { var:domcom_csr_ui_page = flag:marriage } }
domcom_csr_ui_is_workforce = { scope = character is_shown = { var:domcom_csr_ui_page = flag:workforce } }


# 2.6.14 — CSE-native workforce filtering. Military has real CSE sub-ranks;
# the other assignments have XP tracks but no separately named CSE ranks.
domcom_csr_ui_workforce_filter_all = { scope = character effect = { set_variable = { name = domcom_csr_ui_workforce_filter value = flag:all } set_variable = { name = domcom_csr_ui_workforce_page value = 0 } domcom_csr_prepare_workforce_slaves_effect = yes } }
domcom_csr_ui_workforce_filter_unassigned = { scope = character effect = { set_variable = { name = domcom_csr_ui_workforce_filter value = flag:unassigned } set_variable = { name = domcom_csr_ui_workforce_page value = 0 } domcom_csr_prepare_workforce_slaves_effect = yes } }
domcom_csr_ui_workforce_filter_prostitute = { scope = character effect = { set_variable = { name = domcom_csr_ui_workforce_filter value = flag:prostitute } set_variable = { name = domcom_csr_ui_workforce_page value = 0 } domcom_csr_prepare_workforce_slaves_effect = yes } }
domcom_csr_ui_workforce_filter_labour = { scope = character effect = { set_variable = { name = domcom_csr_ui_workforce_filter value = flag:labour } set_variable = { name = domcom_csr_ui_workforce_page value = 0 } domcom_csr_prepare_workforce_slaves_effect = yes } }
domcom_csr_ui_workforce_filter_military = { scope = character effect = { set_variable = { name = domcom_csr_ui_workforce_filter value = flag:military } set_variable = { name = domcom_csr_ui_workforce_page value = 0 } domcom_csr_prepare_workforce_slaves_effect = yes } }
domcom_csr_ui_workforce_filter_recruit = { scope = character effect = { set_variable = { name = domcom_csr_ui_workforce_filter value = flag:recruit } set_variable = { name = domcom_csr_ui_workforce_page value = 0 } domcom_csr_prepare_workforce_slaves_effect = yes } }
domcom_csr_ui_workforce_filter_soldier = { scope = character effect = { set_variable = { name = domcom_csr_ui_workforce_filter value = flag:soldier } set_variable = { name = domcom_csr_ui_workforce_page value = 0 } domcom_csr_prepare_workforce_slaves_effect = yes } }
domcom_csr_ui_workforce_filter_commander = { scope = character effect = { set_variable = { name = domcom_csr_ui_workforce_filter value = flag:commander } set_variable = { name = domcom_csr_ui_workforce_page value = 0 } domcom_csr_prepare_workforce_slaves_effect = yes } }
domcom_csr_ui_workforce_filter_sex = { scope = character effect = { set_variable = { name = domcom_csr_ui_workforce_filter value = flag:sex } set_variable = { name = domcom_csr_ui_workforce_page value = 0 } domcom_csr_prepare_workforce_slaves_effect = yes } }

domcom_csr_ui_buy_low = { scope = character effect = { set_variable = { name = domcom_csr_ui_buy_sort value = 1 } set_variable = { name = domcom_csr_ui_buy_page value = 0 } domcom_csr_resort_exchange_buy_effect = yes } }
domcom_csr_ui_buy_high = { scope = character effect = { set_variable = { name = domcom_csr_ui_buy_sort value = 2 } set_variable = { name = domcom_csr_ui_buy_page value = 0 } domcom_csr_resort_exchange_buy_effect = yes } }
domcom_csr_ui_sell_high = { scope = character effect = { set_variable = { name = domcom_csr_ui_sell_sort value = 1 } set_variable = { name = domcom_csr_ui_sell_page value = 0 } domcom_csr_prepare_exchange_sell_buyers_effect = yes } }
domcom_csr_ui_sell_low = { scope = character effect = { set_variable = { name = domcom_csr_ui_sell_sort value = 2 } set_variable = { name = domcom_csr_ui_sell_page value = 0 } domcom_csr_prepare_exchange_sell_buyers_effect = yes } }
domcom_csr_ui_buy_total = { scope = character effect = { set_variable = { name = domcom_csr_ui_buy_sort value = 3 } set_variable = { name = domcom_csr_ui_buy_page value = 0 } domcom_csr_resort_exchange_buy_effect = yes } }
domcom_csr_ui_buy_dip = { scope = character effect = { set_variable = { name = domcom_csr_ui_buy_sort value = 4 } set_variable = { name = domcom_csr_ui_buy_page value = 0 } domcom_csr_resort_exchange_buy_effect = yes } }
domcom_csr_ui_buy_mar = { scope = character effect = { set_variable = { name = domcom_csr_ui_buy_sort value = 5 } set_variable = { name = domcom_csr_ui_buy_page value = 0 } domcom_csr_resort_exchange_buy_effect = yes } }
domcom_csr_ui_buy_ste = { scope = character effect = { set_variable = { name = domcom_csr_ui_buy_sort value = 6 } set_variable = { name = domcom_csr_ui_buy_page value = 0 } domcom_csr_resort_exchange_buy_effect = yes } }
domcom_csr_ui_buy_int = { scope = character effect = { set_variable = { name = domcom_csr_ui_buy_sort value = 7 } set_variable = { name = domcom_csr_ui_buy_page value = 0 } domcom_csr_resort_exchange_buy_effect = yes } }
domcom_csr_ui_buy_lea = { scope = character effect = { set_variable = { name = domcom_csr_ui_buy_sort value = 8 } set_variable = { name = domcom_csr_ui_buy_page value = 0 } domcom_csr_resort_exchange_buy_effect = yes } }
domcom_csr_ui_buy_pro = { scope = character effect = { set_variable = { name = domcom_csr_ui_buy_sort value = 9 } set_variable = { name = domcom_csr_ui_buy_page value = 0 } domcom_csr_resort_exchange_buy_effect = yes } }

# Buy roster pagination. Page rebuilding never rescans the world; it only slices the cached sorted list.
domcom_csr_ui_buy_prev = {
    scope = character
    is_valid = { has_variable = domcom_csr_ui_buy_page var:domcom_csr_ui_buy_page > 0 }
    effect = { change_variable = { name = domcom_csr_ui_buy_page subtract = 1 } domcom_csr_build_exchange_buy_page_effect = yes }
}
domcom_csr_ui_buy_next = {
    scope = character
    is_valid = { has_variable = domcom_csr_ui_buy_page has_variable = domcom_csr_ui_buy_last_page var:domcom_csr_ui_buy_page < var:domcom_csr_ui_buy_last_page }
    effect = { change_variable = { name = domcom_csr_ui_buy_page add = 1 } domcom_csr_build_exchange_buy_page_effect = yes }
}
domcom_csr_ui_buy_first = { scope = character is_valid = { has_variable = domcom_csr_ui_buy_page var:domcom_csr_ui_buy_page > 0 } effect = { set_variable = { name = domcom_csr_ui_buy_page value = 0 } domcom_csr_build_exchange_buy_page_effect = yes } }
domcom_csr_ui_buy_last = { scope = character is_valid = { has_variable = domcom_csr_ui_buy_page has_variable = domcom_csr_ui_buy_last_page var:domcom_csr_ui_buy_page < var:domcom_csr_ui_buy_last_page } effect = { set_variable = { name = domcom_csr_ui_buy_page value = var:domcom_csr_ui_buy_last_page } domcom_csr_build_exchange_buy_page_effect = yes } }


# Cached-list pagination for Sell, Marriage and Workforce.
domcom_csr_ui_owned_prev = { scope = character is_valid = { has_variable = domcom_csr_ui_owned_page var:domcom_csr_ui_owned_page > 0 } effect = { change_variable = { name = domcom_csr_ui_owned_page subtract = 1 } domcom_csr_build_owned_page_effect = yes } }
domcom_csr_ui_owned_next = { scope = character is_valid = { has_variable = domcom_csr_ui_owned_page has_variable = domcom_csr_ui_owned_last_page var:domcom_csr_ui_owned_page < var:domcom_csr_ui_owned_last_page } effect = { change_variable = { name = domcom_csr_ui_owned_page add = 1 } domcom_csr_build_owned_page_effect = yes } }
domcom_csr_ui_owned_first = { scope = character is_valid = { has_variable = domcom_csr_ui_owned_page var:domcom_csr_ui_owned_page > 0 } effect = { set_variable = { name = domcom_csr_ui_owned_page value = 0 } domcom_csr_build_owned_page_effect = yes } }
domcom_csr_ui_owned_last = { scope = character is_valid = { has_variable = domcom_csr_ui_owned_page has_variable = domcom_csr_ui_owned_last_page var:domcom_csr_ui_owned_page < var:domcom_csr_ui_owned_last_page } effect = { set_variable = { name = domcom_csr_ui_owned_page value = var:domcom_csr_ui_owned_last_page } domcom_csr_build_owned_page_effect = yes } }
domcom_csr_ui_sell_prev = { scope = character is_valid = { has_variable = domcom_csr_ui_sell_page var:domcom_csr_ui_sell_page > 0 } effect = { change_variable = { name = domcom_csr_ui_sell_page subtract = 1 } domcom_csr_build_sell_page_effect = yes } }
domcom_csr_ui_sell_next = { scope = character is_valid = { has_variable = domcom_csr_ui_sell_page has_variable = domcom_csr_ui_sell_last_page var:domcom_csr_ui_sell_page < var:domcom_csr_ui_sell_last_page } effect = { change_variable = { name = domcom_csr_ui_sell_page add = 1 } domcom_csr_build_sell_page_effect = yes } }
domcom_csr_ui_sell_first = { scope = character is_valid = { has_variable = domcom_csr_ui_sell_page var:domcom_csr_ui_sell_page > 0 } effect = { set_variable = { name = domcom_csr_ui_sell_page value = 0 } domcom_csr_build_sell_page_effect = yes } }
domcom_csr_ui_sell_last = { scope = character is_valid = { has_variable = domcom_csr_ui_sell_page has_variable = domcom_csr_ui_sell_last_page var:domcom_csr_ui_sell_page < var:domcom_csr_ui_sell_last_page } effect = { set_variable = { name = domcom_csr_ui_sell_page value = var:domcom_csr_ui_sell_last_page } domcom_csr_build_sell_page_effect = yes } }
domcom_csr_ui_marriage_slave_prev = { scope = character is_valid = { has_variable = domcom_csr_ui_marriage_slave_page var:domcom_csr_ui_marriage_slave_page > 0 } effect = { change_variable = { name = domcom_csr_ui_marriage_slave_page subtract = 1 } domcom_csr_build_marriage_slave_page_effect = yes } }
domcom_csr_ui_marriage_slave_next = { scope = character is_valid = { has_variable = domcom_csr_ui_marriage_slave_page has_variable = domcom_csr_ui_marriage_slave_last_page var:domcom_csr_ui_marriage_slave_page < var:domcom_csr_ui_marriage_slave_last_page } effect = { change_variable = { name = domcom_csr_ui_marriage_slave_page add = 1 } domcom_csr_build_marriage_slave_page_effect = yes } }
domcom_csr_ui_marriage_slave_first = { scope = character is_valid = { has_variable = domcom_csr_ui_marriage_slave_page var:domcom_csr_ui_marriage_slave_page > 0 } effect = { set_variable = { name = domcom_csr_ui_marriage_slave_page value = 0 } domcom_csr_build_marriage_slave_page_effect = yes } }
domcom_csr_ui_marriage_slave_last = { scope = character is_valid = { has_variable = domcom_csr_ui_marriage_slave_page has_variable = domcom_csr_ui_marriage_slave_last_page var:domcom_csr_ui_marriage_slave_page < var:domcom_csr_ui_marriage_slave_last_page } effect = { set_variable = { name = domcom_csr_ui_marriage_slave_page value = var:domcom_csr_ui_marriage_slave_last_page } domcom_csr_build_marriage_slave_page_effect = yes } }
domcom_csr_ui_marriage_partner_prev = { scope = character is_valid = { has_variable = domcom_csr_ui_marriage_partner_page var:domcom_csr_ui_marriage_partner_page > 0 } effect = { change_variable = { name = domcom_csr_ui_marriage_partner_page subtract = 1 } domcom_csr_build_marriage_partner_page_effect = yes } }
domcom_csr_ui_marriage_partner_next = { scope = character is_valid = { has_variable = domcom_csr_ui_marriage_partner_page has_variable = domcom_csr_ui_marriage_partner_last_page var:domcom_csr_ui_marriage_partner_page < var:domcom_csr_ui_marriage_partner_last_page } effect = { change_variable = { name = domcom_csr_ui_marriage_partner_page add = 1 } domcom_csr_build_marriage_partner_page_effect = yes } }
domcom_csr_ui_marriage_partner_first = { scope = character is_valid = { has_variable = domcom_csr_ui_marriage_partner_page var:domcom_csr_ui_marriage_partner_page > 0 } effect = { set_variable = { name = domcom_csr_ui_marriage_partner_page value = 0 } domcom_csr_build_marriage_partner_page_effect = yes } }
domcom_csr_ui_marriage_partner_last = { scope = character is_valid = { has_variable = domcom_csr_ui_marriage_partner_page has_variable = domcom_csr_ui_marriage_partner_last_page var:domcom_csr_ui_marriage_partner_page < var:domcom_csr_ui_marriage_partner_last_page } effect = { set_variable = { name = domcom_csr_ui_marriage_partner_page value = var:domcom_csr_ui_marriage_partner_last_page } domcom_csr_build_marriage_partner_page_effect = yes } }
domcom_csr_ui_workforce_prev = { scope = character is_valid = { has_variable = domcom_csr_ui_workforce_page var:domcom_csr_ui_workforce_page > 0 } effect = { change_variable = { name = domcom_csr_ui_workforce_page subtract = 1 } domcom_csr_build_workforce_page_effect = yes } }
domcom_csr_ui_workforce_next = { scope = character is_valid = { has_variable = domcom_csr_ui_workforce_page has_variable = domcom_csr_ui_workforce_last_page var:domcom_csr_ui_workforce_page < var:domcom_csr_ui_workforce_last_page } effect = { change_variable = { name = domcom_csr_ui_workforce_page add = 1 } domcom_csr_build_workforce_page_effect = yes } }
domcom_csr_ui_workforce_first = { scope = character is_valid = { has_variable = domcom_csr_ui_workforce_page var:domcom_csr_ui_workforce_page > 0 } effect = { set_variable = { name = domcom_csr_ui_workforce_page value = 0 } domcom_csr_build_workforce_page_effect = yes } }
domcom_csr_ui_workforce_last = { scope = character is_valid = { has_variable = domcom_csr_ui_workforce_page has_variable = domcom_csr_ui_workforce_last_page var:domcom_csr_ui_workforce_page < var:domcom_csr_ui_workforce_last_page } effect = { set_variable = { name = domcom_csr_ui_workforce_page value = var:domcom_csr_ui_workforce_last_page } domcom_csr_build_workforce_page_effect = yes } }


domcom_csr_ui_owned_total = { scope = character effect = { set_variable = { name = domcom_csr_ui_owned_sort value = 1 } set_variable = { name = domcom_csr_ui_owned_page value = 0 } domcom_csr_prepare_owned_slaves_effect = yes } }
domcom_csr_ui_owned_dip = { scope = character effect = { set_variable = { name = domcom_csr_ui_owned_sort value = 2 } set_variable = { name = domcom_csr_ui_owned_page value = 0 } domcom_csr_prepare_owned_slaves_effect = yes } }
domcom_csr_ui_owned_mar = { scope = character effect = { set_variable = { name = domcom_csr_ui_owned_sort value = 3 } set_variable = { name = domcom_csr_ui_owned_page value = 0 } domcom_csr_prepare_owned_slaves_effect = yes } }
domcom_csr_ui_owned_ste = { scope = character effect = { set_variable = { name = domcom_csr_ui_owned_sort value = 4 } set_variable = { name = domcom_csr_ui_owned_page value = 0 } domcom_csr_prepare_owned_slaves_effect = yes } }
domcom_csr_ui_owned_int = { scope = character effect = { set_variable = { name = domcom_csr_ui_owned_sort value = 5 } set_variable = { name = domcom_csr_ui_owned_page value = 0 } domcom_csr_prepare_owned_slaves_effect = yes } }
domcom_csr_ui_owned_lea = { scope = character effect = { set_variable = { name = domcom_csr_ui_owned_sort value = 6 } set_variable = { name = domcom_csr_ui_owned_page value = 0 } domcom_csr_prepare_owned_slaves_effect = yes } }
domcom_csr_ui_owned_pro = { scope = character effect = { set_variable = { name = domcom_csr_ui_owned_sort value = 7 } set_variable = { name = domcom_csr_ui_owned_page value = 0 } domcom_csr_prepare_owned_slaves_effect = yes } }

domcom_csr_ui_marriage_slave_total = { scope = character effect = { set_variable = { name = domcom_csr_ui_marriage_slave_sort value = 1 } set_variable = { name = domcom_csr_ui_marriage_slave_page value = 0 } domcom_csr_prepare_marriage_slaves_effect = yes } }
domcom_csr_ui_marriage_slave_dip = { scope = character effect = { set_variable = { name = domcom_csr_ui_marriage_slave_sort value = 2 } set_variable = { name = domcom_csr_ui_marriage_slave_page value = 0 } domcom_csr_prepare_marriage_slaves_effect = yes } }
domcom_csr_ui_marriage_slave_mar = { scope = character effect = { set_variable = { name = domcom_csr_ui_marriage_slave_sort value = 3 } set_variable = { name = domcom_csr_ui_marriage_slave_page value = 0 } domcom_csr_prepare_marriage_slaves_effect = yes } }
domcom_csr_ui_marriage_slave_ste = { scope = character effect = { set_variable = { name = domcom_csr_ui_marriage_slave_sort value = 4 } set_variable = { name = domcom_csr_ui_marriage_slave_page value = 0 } domcom_csr_prepare_marriage_slaves_effect = yes } }
domcom_csr_ui_marriage_slave_int = { scope = character effect = { set_variable = { name = domcom_csr_ui_marriage_slave_sort value = 5 } set_variable = { name = domcom_csr_ui_marriage_slave_page value = 0 } domcom_csr_prepare_marriage_slaves_effect = yes } }
domcom_csr_ui_marriage_slave_lea = { scope = character effect = { set_variable = { name = domcom_csr_ui_marriage_slave_sort value = 6 } set_variable = { name = domcom_csr_ui_marriage_slave_page value = 0 } domcom_csr_prepare_marriage_slaves_effect = yes } }
domcom_csr_ui_marriage_slave_pro = { scope = character effect = { set_variable = { name = domcom_csr_ui_marriage_slave_sort value = 7 } set_variable = { name = domcom_csr_ui_marriage_slave_page value = 0 } domcom_csr_prepare_marriage_slaves_effect = yes } }

domcom_csr_ui_marriage_children = { scope = character effect = { set_variable = { name = domcom_csr_ui_marriage_sort value = 1 } set_variable = { name = domcom_csr_ui_marriage_partner_page value = 0 } domcom_csr_prepare_marriage_partners_effect = yes } }
domcom_csr_ui_marriage_apex = { scope = character effect = { set_variable = { name = domcom_csr_ui_marriage_sort value = 2 } set_variable = { name = domcom_csr_ui_marriage_partner_page value = 0 } domcom_csr_prepare_marriage_partners_effect = yes } }
domcom_csr_ui_marriage_total = { scope = character effect = { set_variable = { name = domcom_csr_ui_marriage_sort value = 3 } set_variable = { name = domcom_csr_ui_marriage_partner_page value = 0 } domcom_csr_prepare_marriage_partners_effect = yes } }
domcom_csr_ui_marriage_dip = { scope = character effect = { set_variable = { name = domcom_csr_ui_marriage_sort value = 4 } set_variable = { name = domcom_csr_ui_marriage_partner_page value = 0 } domcom_csr_prepare_marriage_partners_effect = yes } }
domcom_csr_ui_marriage_mar = { scope = character effect = { set_variable = { name = domcom_csr_ui_marriage_sort value = 5 } set_variable = { name = domcom_csr_ui_marriage_partner_page value = 0 } domcom_csr_prepare_marriage_partners_effect = yes } }
domcom_csr_ui_marriage_ste = { scope = character effect = { set_variable = { name = domcom_csr_ui_marriage_sort value = 6 } set_variable = { name = domcom_csr_ui_marriage_partner_page value = 0 } domcom_csr_prepare_marriage_partners_effect = yes } }
domcom_csr_ui_marriage_int = { scope = character effect = { set_variable = { name = domcom_csr_ui_marriage_sort value = 7 } set_variable = { name = domcom_csr_ui_marriage_partner_page value = 0 } domcom_csr_prepare_marriage_partners_effect = yes } }
domcom_csr_ui_marriage_lea = { scope = character effect = { set_variable = { name = domcom_csr_ui_marriage_sort value = 8 } set_variable = { name = domcom_csr_ui_marriage_partner_page value = 0 } domcom_csr_prepare_marriage_partners_effect = yes } }
domcom_csr_ui_marriage_pro = { scope = character effect = { set_variable = { name = domcom_csr_ui_marriage_sort value = 9 } set_variable = { name = domcom_csr_ui_marriage_partner_page value = 0 } domcom_csr_prepare_marriage_partners_effect = yes } }


domcom_csr_ui_bulk_unselected = {
    scope = character
    is_shown = {
        has_variable = domcom_csr_ui_market_player
        OR = {
            NOT = { has_variable = domcom_csr_bulk_sell_owner }
            NOT = { var:domcom_csr_bulk_sell_owner = var:domcom_csr_ui_market_player }
        }
    }
}

domcom_csr_ui_bulk_selected = {
    scope = character
    is_shown = {
        has_variable = domcom_csr_ui_market_player
        has_variable = domcom_csr_bulk_sell_owner
        var:domcom_csr_bulk_sell_owner = var:domcom_csr_ui_market_player
    }
}

domcom_csr_ui_bulk_toggle = {
    scope = character
    is_valid = { has_variable = domcom_csr_ui_market_player carnx_slave_can_be_sold_trigger = yes carnx_slave_has_pending_transaction = no }
    effect = {
        if = {
            limit = { has_variable = domcom_csr_bulk_sell_owner var:domcom_csr_bulk_sell_owner = var:domcom_csr_ui_market_player }
            remove_variable = domcom_csr_bulk_sell_owner
        }
        else = { set_variable = { name = domcom_csr_bulk_sell_owner value = var:domcom_csr_ui_market_player } }
    }
}

domcom_csr_ui_bulk_select_all = {
    scope = character
    is_valid = { any_relation = { type = slave carnx_slave_can_be_sold_trigger = yes carnx_slave_has_pending_transaction = no } }
    effect = {
        save_scope_as = domcom_csr_bulk_selector
        every_relation = {
            type = slave
            limit = { carnx_slave_can_be_sold_trigger = yes carnx_slave_has_pending_transaction = no }
            set_variable = { name = domcom_csr_bulk_sell_owner value = scope:domcom_csr_bulk_selector }
        }
    }
}

domcom_csr_ui_bulk_clear = {
    scope = character
    effect = {
        save_scope_as = domcom_csr_bulk_selector
        every_relation = {
            type = slave
            limit = { has_variable = domcom_csr_bulk_sell_owner var:domcom_csr_bulk_sell_owner = scope:domcom_csr_bulk_selector }
            remove_variable = domcom_csr_bulk_sell_owner
        }
    }
}

domcom_csr_ui_bulk_sell_selected = {
    scope = character
    is_valid = {
        any_relation = {
            type = slave
            has_variable = domcom_csr_bulk_sell_owner
            var:domcom_csr_bulk_sell_owner = root
            carnx_slave_can_be_sold_trigger = yes
            carnx_slave_has_pending_transaction = no
        }
    }
    effect = { domcom_csr_bulk_sell_selected_effect = yes }
}

domcom_csr_ui_select_slave = {
    scope = character
    is_valid = { has_variable = domcom_csr_ui_market_player var:domcom_csr_ui_market_player = { is_alive = yes } }
    effect = {
        save_scope_as = domcom_csr_ui_selected
        var:domcom_csr_ui_market_player = {
            set_variable = { name = domcom_csr_ui_selected_slave value = scope:domcom_csr_ui_selected }
            set_variable = { name = domcom_csr_ui_sell_page value = 0 }
            domcom_csr_prepare_exchange_sell_buyers_effect = yes
        }
    }
}

domcom_csr_ui_buy_now = {
    scope = character
    is_valid = {
        is_alive = yes
        carnx_is_slave_trigger = yes
        carnx_slave_can_be_sold_trigger = yes
        carnx_slave_has_pending_transaction = no
        NOT = { has_character_flag = domcom_csr_military_contract_active }
        has_variable = domcom_csr_ui_market_player
        has_variable = domcom_csr_ui_seller
        has_variable = domcom_csr_ui_ask_price
        has_relation_slave_owner = var:domcom_csr_ui_seller
        var:domcom_csr_ui_seller = {
            is_alive = yes
            in_diplomatic_range = var:domcom_csr_ui_market_player
        }
        var:domcom_csr_ui_market_player = {
            is_alive = yes
            short_term_gold >= root.var:domcom_csr_ui_ask_price
        }
    }
    effect = {
        save_scope_as = slave
        var:domcom_csr_ui_market_player = { save_scope_as = buyer save_scope_as = actor }
        var:domcom_csr_ui_seller = { save_scope_as = seller }
        set_variable = { name = carnx_slave_price value = var:domcom_csr_ui_ask_price }
        carn_buy_slave_effect = { SLAVE_PRICE = var:domcom_csr_ui_ask_price }
        remove_variable = carnx_slave_price
        scope:buyer = {
            domcom_csr_prepare_exchange_buy_effect = yes
            domcom_csr_prepare_owned_slaves_effect = yes
        }
    }
}

domcom_csr_ui_hire_service_visible = {
    scope = character
    is_shown = {
        has_variable = domcom_csr_service_listed
        domcom_csr_has_service_job_trigger = yes
        NOT = { has_character_flag = domcom_csr_military_contract_active }
    }
}

domcom_csr_ui_hire_service_now = {
    scope = character
    is_valid = {
        is_alive = yes
        has_variable = domcom_csr_service_listed
        domcom_csr_can_offer_service_trigger = yes
        NOT = { has_character_flag = domcom_csr_external_service_cooldown }
        NOT = { has_character_flag = domcom_csr_military_contract_active }
        has_variable = domcom_csr_ui_market_player
        var:domcom_csr_ui_market_player = {
            is_alive = yes
            is_landed = yes
            short_term_gold >= root.domcom_csr_service_price_value
        }
        trigger_if = {
            limit = { cse_is_assigned_as_military_slave_trigger = yes }
            var:domcom_csr_ui_market_player = { is_at_war = yes }
        }
        trigger_if = {
            limit = { domcom_csr_service_job_is_sexual_trigger = yes }
            var:domcom_csr_ui_market_player = { age >= 18 }
        }
    }
    effect = {
        save_scope_as = domcom_csr_service_slave
        var:domcom_csr_ui_market_player = { save_scope_as = domcom_csr_service_client }
        random_relation = { type = slave_owner save_scope_as = domcom_csr_service_owner }
        if = {
            limit = { cse_is_assigned_as_military_slave_trigger = yes }
            domcom_csr_start_military_service_contract_effect = yes
        }
        else = { domcom_csr_execute_immediate_service_effect = yes }
        scope:domcom_csr_service_client = { domcom_csr_prepare_exchange_buy_effect = yes }
    }
}

domcom_csr_ui_sell_now = {
    scope = character
    is_valid = {
        has_variable = domcom_csr_ui_market_player
        has_variable = domcom_csr_ui_market_slave
        has_variable = domcom_csr_ui_bid_price
        var:domcom_csr_ui_bid_price > 0
        short_term_gold >= var:domcom_csr_ui_bid_price
        var:domcom_csr_ui_market_slave = {
            carnx_slave_can_be_sold_trigger = yes
            carnx_slave_has_pending_transaction = no
            NOT = { has_character_flag = domcom_csr_military_contract_active }
        }
    }
    effect = {
        save_scope_as = buyer
        var:domcom_csr_ui_market_player = { save_scope_as = seller save_scope_as = actor }
        var:domcom_csr_ui_market_slave = { save_scope_as = slave }
        domcom_csr_execute_exchange_sale_effect = yes
        scope:seller = {
            set_variable = { name = domcom_csr_last_sale_price value = scope:buyer.var:domcom_csr_ui_bid_price }
            set_variable = { name = domcom_csr_last_sale_buyer value = scope:buyer }
            set_variable = { name = domcom_csr_last_sale_slave value = scope:slave }
            remove_variable = domcom_csr_ui_selected_slave
            domcom_csr_prepare_owned_slaves_effect = yes
            domcom_csr_clear_exchange_sell_cache_effect = yes
            send_interface_toast = { type = event_toast_effect_good title = DOMCOM_CSR_SINGLE_SELL_TOAST left_icon = scope:slave right_icon = scope:buyer }
        }
    }
}


domcom_csr_ui_select_marriage_slave = {
    scope = character
    is_valid = { has_variable = domcom_csr_ui_market_player var:domcom_csr_ui_market_player = { is_alive = yes } }
    effect = {
        save_scope_as = domcom_csr_ui_marriage_selected
        var:domcom_csr_ui_market_player = {
            set_variable = { name = domcom_csr_ui_marriage_slave value = scope:domcom_csr_ui_marriage_selected }
            set_variable = { name = domcom_csr_ui_marriage_partner_page value = 0 }
            domcom_csr_prepare_marriage_partners_effect = yes
        }
    }
}

domcom_csr_ui_marry_now = {
    scope = character
    is_valid = {
        is_alive = yes
        age >= 18
        is_married = no
        is_betrothed = no
        has_variable = domcom_csr_ui_market_player
        var:domcom_csr_ui_market_player = {
            has_variable = domcom_csr_ui_marriage_slave
            var:domcom_csr_ui_marriage_slave = { is_alive = yes age >= 18 is_married = no is_betrothed = no }
        }
    }
    effect = {
        save_scope_as = domcom_csr_marriage_partner
        var:domcom_csr_ui_market_player = {
            save_scope_as = domcom_csr_marriage_owner
            var:domcom_csr_ui_marriage_slave = { save_scope_as = domcom_csr_marriage_slave }
        }
        # Raw marry effect deliberately bypasses the normal interaction gate. CSR slave-concubines
        # carry can_not_marry, while the Exchange has already checked CSR's marriage compatibility trigger.
        scope:domcom_csr_marriage_slave = { marry = scope:domcom_csr_marriage_partner }
        scope:domcom_csr_marriage_owner = {
            send_interface_toast = { type = event_toast_effect_good title = DOMCOM_CSR_MARRIAGE_TOAST left_icon = scope:domcom_csr_marriage_slave right_icon = scope:domcom_csr_marriage_partner }
            remove_variable = domcom_csr_ui_marriage_slave
            domcom_csr_prepare_marriage_slaves_effect = yes
            domcom_csr_clear_marriage_partner_cache_effect = yes
        }
    }
}


# 2.6.7 Workforce actions
domcom_csr_ui_assign_best_roles = {
    scope = character
    effect = {
        domcom_csr_assign_best_slave_roles_effect = yes
        send_interface_toast = { type = event_toast_effect_good title = DOMCOM_CSR_WORKFORCE_ASSIGNED_TOAST left_icon = root }
    }
}

domcom_csr_ui_eunuchize_slave = {
    scope = character
    is_valid = {
        is_alive = yes
        is_male = yes
        is_imprisoned = no
        NOT = { has_trait = eunuch }
        has_variable = domcom_csr_ui_market_player
        has_relation_slave_owner = var:domcom_csr_ui_market_player
    }
    effect = {
        save_scope_as = recipient
        var:domcom_csr_ui_market_player = {
            save_scope_as = actor
            castrate_recipient_effect = yes
            domcom_csr_prepare_workforce_slaves_effect = yes
        }
    }
}

domcom_csr_ui_eunuchize_all_arm = {
    scope = character
    is_shown = { NOT = { has_variable = domcom_csr_ui_confirm_eunuchize_all } }
    is_valid = { any_relation = { type = slave is_alive = yes is_male = yes is_imprisoned = no NOT = { has_trait = eunuch } } }
    effect = { set_variable = { name = domcom_csr_ui_confirm_eunuchize_all value = 1 } }
}

domcom_csr_ui_eunuchize_all_confirm = {
    scope = character
    is_shown = { has_variable = domcom_csr_ui_confirm_eunuchize_all }
    is_valid = { any_relation = { type = slave is_alive = yes is_male = yes is_imprisoned = no NOT = { has_trait = eunuch } } }
    effect = {
        domcom_csr_eunuchize_all_eligible_slaves_effect = yes
        remove_variable = domcom_csr_ui_confirm_eunuchize_all
        send_interface_toast = { type = event_toast_effect_good title = DOMCOM_CSR_EUNUCH_MASS_TOAST left_icon = root }
    }
}

domcom_csr_ui_eunuchize_all_cancel = {
    scope = character
    is_shown = { has_variable = domcom_csr_ui_confirm_eunuchize_all }
    effect = { remove_variable = domcom_csr_ui_confirm_eunuchize_all }
}

# 2.6.12 — Carnalitas Slavery Expansion native workforce jobs.
domcom_csr_ui_job_prostitute = {
    scope = character
    is_valid = {
        is_alive = yes
        age >= 18
        cse_can_work_ignoring_age_trigger = yes
        cse_can_be_slave_prostitute_trigger = yes
        cse_is_assigned_as_slave_prostitute_trigger = no
        has_variable = domcom_csr_ui_market_player
        has_relation_slave_owner = var:domcom_csr_ui_market_player
        var:domcom_csr_ui_market_player = {
            NOT = { faith = { has_doctrine_parameter = carn_prostitution_illegal } }
            any_relation = {
                type = slave
                cse_is_assigned_as_slave_prostitute_trigger = yes
                count < cse_slave_prostitute_ownership_limit_value
            }
        }
    }
    effect = { domcom_csr_set_job_slave_prostitute_effect = yes }
}

domcom_csr_ui_job_labour = {
    scope = character
    is_valid = {
        is_alive = yes
        cse_can_work_ignoring_age_trigger = yes
        cse_is_assigned_as_labour_slave_trigger = no
        has_variable = domcom_csr_ui_market_player
        has_relation_slave_owner = var:domcom_csr_ui_market_player
        var:domcom_csr_ui_market_player = {
            any_relation = {
                type = slave
                cse_is_assigned_as_labour_slave_trigger = yes
                count < cse_labour_slave_ownership_limit_value
            }
        }
    }
    effect = { domcom_csr_set_job_labour_slave_effect = yes }
}

domcom_csr_ui_job_military = {
    scope = character
    is_valid = {
        is_alive = yes
        effective_age >= cse_military_slave_age_start_value
        cse_can_work_ignoring_age_trigger = yes
        cse_is_assigned_as_military_slave_trigger = no
        has_variable = domcom_csr_ui_market_player
        has_relation_slave_owner = var:domcom_csr_ui_market_player
        var:domcom_csr_ui_market_player = {
            any_relation = {
                type = slave
                cse_is_assigned_as_military_slave_trigger = yes
                count < cse_military_slave_ownership_limit_value
            }
        }
    }
    effect = { domcom_csr_set_job_military_slave_effect = yes }
}

domcom_csr_ui_job_sex = {
    scope = character
    is_valid = {
        is_alive = yes
        age >= 18
        cse_can_work_ignoring_age_trigger = yes
        cse_is_assigned_as_sex_slave_trigger = no
        has_variable = domcom_csr_ui_market_player
        has_relation_slave_owner = var:domcom_csr_ui_market_player
        var:domcom_csr_ui_market_player = {
            any_relation = {
                type = slave
                cse_is_assigned_as_sex_slave_trigger = yes
                count < cse_sex_slave_ownership_limit_value
            }
        }
    }
    effect = { domcom_csr_set_job_sex_slave_effect = yes }
}

domcom_csr_ui_job_clear = {
    scope = character
    is_valid = {
        is_alive = yes
        has_variable = domcom_csr_ui_market_player
        has_relation_slave_owner = var:domcom_csr_ui_market_player
        NOT = { has_character_flag = domcom_csr_military_contract_active }
        OR = {
            cse_is_assigned_as_slave_prostitute_trigger = yes
            cse_is_assigned_as_labour_slave_trigger = yes
            cse_is_assigned_as_military_slave_trigger = yes
            cse_is_assigned_as_sex_slave_trigger = yes
        }
    }
    effect = { domcom_csr_clear_cse_slave_job_effect = yes }
}

domcom_csr_ui_is_job_prostitute = { scope = character is_shown = { cse_is_assigned_as_slave_prostitute_trigger = yes } }
domcom_csr_ui_is_job_labour = { scope = character is_shown = { cse_is_assigned_as_labour_slave_trigger = yes } }
domcom_csr_ui_is_military_recruit = { scope = character is_shown = { cse_is_slave_recruit_trigger = yes } }
domcom_csr_ui_is_military_soldier = { scope = character is_shown = { cse_is_slave_soldier_trigger = yes } }
domcom_csr_ui_is_military_commander = { scope = character is_shown = { cse_is_slave_commander_trigger = yes } }
domcom_csr_ui_is_military_unranked = {
    scope = character
    is_shown = {
        cse_is_assigned_as_military_slave_trigger = yes
        cse_is_slave_recruit_trigger = no
        cse_is_slave_soldier_trigger = no
        cse_is_slave_commander_trigger = no
    }
}
domcom_csr_ui_is_job_sex = { scope = character is_shown = { cse_is_assigned_as_sex_slave_trigger = yes } }
domcom_csr_ui_is_job_unassigned = {
    scope = character
    is_shown = {
        cse_is_assigned_as_slave_prostitute_trigger = no
        cse_is_assigned_as_labour_slave_trigger = no
        cse_is_assigned_as_military_slave_trigger = no
        cse_is_assigned_as_sex_slave_trigger = no
    }
}

domcom_csr_ui_select_liaison_slave = {
    scope = character
    is_shown = { cse_is_assigned_as_sex_slave_trigger = yes }
    is_valid = {
        is_alive = yes
        age >= 18
        NOT = { has_character_flag = domcom_csr_liaison_monthly_cooldown }
        has_variable = domcom_csr_ui_market_player
        has_relation_slave_owner = var:domcom_csr_ui_market_player
    }
    effect = {
        save_scope_as = domcom_csr_liaison_selected
        var:domcom_csr_ui_market_player = {
            set_variable = { name = domcom_csr_selected_liaison_slave value = scope:domcom_csr_liaison_selected }
            send_interface_toast = { type = event_toast_effect_good title = DOMCOM_CSR_LIAISON_SELECTED_TOAST left_icon = scope:domcom_csr_liaison_selected }
        }
    }
}

# 2.6.21 — Visible Service Desk controls. These are intentionally player-facing; the AI economy
# can work in the background, but the player can list, pause, manually offer, and inspect every service.
domcom_csr_ui_service_is_listed = {
    scope = character
    is_shown = {
        domcom_csr_has_service_job_trigger = yes
        has_variable = domcom_csr_service_listed
        NOT = { has_character_flag = domcom_csr_military_contract_active }
    }
}

domcom_csr_ui_service_is_private = {
    scope = character
    is_shown = {
        domcom_csr_has_service_job_trigger = yes
        NOT = { has_variable = domcom_csr_service_listed }
        NOT = { has_character_flag = domcom_csr_military_contract_active }
    }
}

domcom_csr_ui_service_is_contract = {
    scope = character
    is_shown = { has_character_flag = domcom_csr_military_contract_active }
}

domcom_csr_ui_service_offer_visible = {
    scope = character
    is_shown = {
        domcom_csr_has_service_job_trigger = yes
        NOT = { has_character_flag = domcom_csr_military_contract_active }
    }
}

domcom_csr_ui_service_list = {
    scope = character
    is_shown = {
        domcom_csr_has_service_job_trigger = yes
        NOT = { has_character_flag = domcom_csr_military_contract_active }
        NOT = { has_variable = domcom_csr_service_listed }
    }
    is_valid = {
        is_alive = yes
        has_variable = domcom_csr_ui_market_player
        has_relation_slave_owner = var:domcom_csr_ui_market_player
        domcom_csr_has_service_job_trigger = yes
    }
    effect = {
        set_variable = { name = domcom_csr_service_listed value = 1 }
        remove_variable = domcom_csr_service_opt_out
        var:domcom_csr_ui_market_player = { domcom_csr_prepare_workforce_slaves_effect = yes }
    }
}

domcom_csr_ui_service_pause = {
    scope = character
    is_shown = {
        has_variable = domcom_csr_service_listed
        NOT = { has_character_flag = domcom_csr_military_contract_active }
    }
    is_valid = {
        is_alive = yes
        has_variable = domcom_csr_ui_market_player
        has_relation_slave_owner = var:domcom_csr_ui_market_player
    }
    effect = {
        remove_variable = domcom_csr_service_listed
        set_variable = { name = domcom_csr_service_opt_out value = 1 }
        var:domcom_csr_ui_market_player = { domcom_csr_prepare_workforce_slaves_effect = yes }
    }
}

domcom_csr_ui_select_service_slave = {
    scope = character
    is_shown = {
        domcom_csr_has_service_job_trigger = yes
        NOT = { has_character_flag = domcom_csr_military_contract_active }
    }
    is_valid = {
        is_alive = yes
        domcom_csr_can_offer_service_trigger = yes
        NOT = { has_character_flag = domcom_csr_external_service_cooldown }
        has_variable = domcom_csr_ui_market_player
        has_relation_slave_owner = var:domcom_csr_ui_market_player
    }
    effect = {
        save_scope_as = domcom_csr_service_selected
        var:domcom_csr_ui_market_player = {
            set_variable = { name = domcom_csr_selected_service_slave value = scope:domcom_csr_service_selected }
            set_variable = { name = domcom_csr_selected_service_price value = scope:domcom_csr_service_selected.domcom_csr_service_price_value }
            send_interface_toast = {
                type = event_toast_effect_good
                title = DOMCOM_CSR_SERVICE_SELECTED_TOAST
                left_icon = scope:domcom_csr_service_selected
            }
        }
    }
}

domcom_csr_ui_service_list_all = {
    scope = character
    effect = {
        save_scope_as = domcom_csr_service_owner
        every_relation = {
            type = slave
            limit = { is_alive = yes domcom_csr_has_service_job_trigger = yes NOT = { has_character_flag = domcom_csr_military_contract_active } }
            set_variable = { name = domcom_csr_service_listed value = 1 }
            remove_variable = domcom_csr_service_opt_out
        }
        domcom_csr_prepare_workforce_slaves_effect = yes
        send_interface_toast = { type = event_toast_effect_good title = DOMCOM_CSR_SERVICE_ALL_LISTED_TOAST left_icon = root }
    }
}

domcom_csr_ui_service_pause_all = {
    scope = character
    effect = {
        every_relation = {
            type = slave
            limit = { is_alive = yes domcom_csr_has_service_job_trigger = yes NOT = { has_character_flag = domcom_csr_military_contract_active } }
            remove_variable = domcom_csr_service_listed
            set_variable = { name = domcom_csr_service_opt_out value = 1 }
        }
        domcom_csr_prepare_workforce_slaves_effect = yes
        send_interface_toast = { type = event_toast_effect_good title = DOMCOM_CSR_SERVICE_ALL_PAUSED_TOAST left_icon = root }
    }
}

domcom_csr_ui_service_reset_report = {
    scope = character
    effect = {
        set_variable = { name = domcom_csr_service_court_gold value = 0 }
        set_variable = { name = domcom_csr_service_external_gold value = 0 }
        set_variable = { name = domcom_csr_service_military_gold value = 0 }
        set_variable = { name = domcom_csr_service_prestige value = 0 }
        set_variable = { name = domcom_csr_service_piety value = 0 }
        set_variable = { name = domcom_csr_service_contracts value = 0 }
        set_variable = { name = domcom_csr_service_military_completed value = 0 }
        domcom_csr_prepare_workforce_slaves_effect = yes
    }
}

