﻿# 2.6.4 — Quick access to the same Slavery Office workflows from slave portraits.

domcom_csr_manage_owned_slave_interaction = {
    category = interaction_category_uncategorized
    interface_priority = 75
    common_interaction = yes
    icon = carnx_chain
    desc = domcom_csr_manage_owned_slave_interaction_desc
    is_shown = {
        scope:actor = { is_ai = no has_relation_slave = scope:recipient }
        scope:recipient = { is_alive = yes }
    }
    is_valid_showing_failures_only = { scope:recipient = { carnx_slave_can_be_sold_trigger = yes } }
    auto_accept = yes
    on_accept = {
        scope:recipient = { save_scope_as = domcom_csr_quick_slave }
        scope:actor = {
            set_variable = { name = ddm_ui_page value = flag:slavery }
            set_variable = { name = ddm_ui_open value = yes }
            set_variable = { name = domcom_csr_ui_page value = flag:sell }
            set_variable = { name = domcom_csr_ui_selected_slave value = scope:domcom_csr_quick_slave }
            domcom_csr_prepare_owned_slaves_effect = yes
            domcom_csr_prepare_exchange_sell_buyers_effect = yes
        }
    }
    ai_will_do = { base = 0 }
}

domcom_csr_arrange_slave_marriage_interaction = {
    category = interaction_category_uncategorized
    interface_priority = 74
    common_interaction = yes
    icon = carnx_chain
    desc = domcom_csr_arrange_slave_marriage_interaction_desc
    is_shown = {
        scope:actor = { is_ai = no has_relation_slave = scope:recipient }
        scope:recipient = { is_alive = yes age >= 18 is_married = no is_betrothed = no }
    }
    auto_accept = yes
    on_accept = {
        scope:recipient = { save_scope_as = domcom_csr_quick_slave }
        scope:actor = {
            set_variable = { name = ddm_ui_page value = flag:slavery }
            set_variable = { name = ddm_ui_open value = yes }
            set_variable = { name = domcom_csr_ui_page value = flag:marriage }
            set_variable = { name = domcom_csr_ui_marriage_slave value = scope:domcom_csr_quick_slave }
            domcom_csr_prepare_marriage_slaves_effect = yes
            domcom_csr_prepare_marriage_partners_effect = yes
        }
    }
    ai_will_do = { base = 0 }
}

domcom_csr_buy_this_slave_interaction = {
    category = interaction_category_uncategorized
    interface_priority = 76
    common_interaction = yes
    icon = carnx_chain
    desc = domcom_csr_buy_this_slave_interaction_desc
    is_shown = {
        scope:actor = { is_ai = no carnx_can_be_slave_owner_trigger = yes }
        scope:recipient = { is_alive = yes has_trait = slave NOT = { has_relation_slave_owner = scope:actor } }
    }
    is_valid_showing_failures_only = {
        scope:recipient = {
            carnx_slave_can_be_sold_trigger = yes
            NOT = { has_character_flag = domcom_csr_military_contract_active }
            any_relation = { type = slave_owner is_alive = yes }
        }
        scope:actor = {
            short_term_gold >= scope:recipient.carnx_slave_ask_price_value
        }
    }
    auto_accept = yes
    on_accept = {
        scope:actor = { save_scope_as = buyer save_scope_as = actor }
        scope:recipient = {
            save_scope_as = slave
            random_relation = { type = slave_owner save_scope_as = seller }
        }
        carn_buy_slave_effect = { SLAVE_PRICE = scope:slave.carnx_slave_ask_price_value }
        scope:actor = { send_interface_toast = { type = event_toast_effect_good title = DOMCOM_CSR_QUICK_BUY_TOAST left_icon = scope:slave right_icon = scope:seller } }
    }
    ai_will_do = { base = 0 }
}

# 2.6.12 — Once-per-month liaison proposal using an adult CSE Sex Slave.
# Select the slave from Workforce first, then right-click the intended adult partner.
domcom_csr_offer_selected_liaison_interaction = {
    category = interaction_category_friendly
    interface_priority = 73
    common_interaction = yes
    icon = lover
    desc = domcom_csr_offer_selected_liaison_interaction_desc

    is_shown = {
        scope:actor = {
            is_ai = no
            has_variable = domcom_csr_selected_liaison_slave
            var:domcom_csr_selected_liaison_slave = {
                is_alive = yes
                age >= 18
                cse_is_assigned_as_sex_slave_trigger = yes
                has_relation_slave_owner = scope:actor
                NOT = { has_character_flag = domcom_csr_liaison_monthly_cooldown }
            }
        }
        scope:recipient = { is_alive = yes age >= 18 is_imprisoned = no }
        scope:actor = { NOT = { var:domcom_csr_selected_liaison_slave = scope:recipient } }
    }

    is_valid_showing_failures_only = {
        scope:actor = {
            var:domcom_csr_selected_liaison_slave = {
                is_alive = yes
                age >= 18
                NOT = { has_character_flag = domcom_csr_liaison_monthly_cooldown }
            }
        }
    }

    auto_accept = no
    ai_accept = {
        base = 50
        modifier = { scope:recipient = { has_trait = lustful } add = 25 }
        modifier = { scope:recipient = { has_trait = chaste } add = -35 }
    }

    on_accept = {
        scope:actor = {
            save_scope_as = domcom_csr_liaison_owner
            var:domcom_csr_selected_liaison_slave = { save_scope_as = domcom_csr_liaison_slave }
        }
        scope:recipient = { save_scope_as = domcom_csr_liaison_partner }
        scope:domcom_csr_liaison_slave = {
            add_character_flag = { flag = domcom_csr_liaison_monthly_cooldown days = 30 }
            had_sex_with_effect = {
                CHARACTER = scope:domcom_csr_liaison_partner
                PREGNANCY_CHANCE = pregnancy_chance
            }
        }
        scope:domcom_csr_liaison_owner = {
            remove_variable = domcom_csr_selected_liaison_slave
            send_interface_toast = { type = event_toast_effect_good title = DOMCOM_CSR_LIAISON_ACCEPTED_TOAST left_icon = scope:domcom_csr_liaison_slave right_icon = scope:domcom_csr_liaison_partner }
        }
    }

    ai_will_do = { base = 0 }
}

# 2.6.21 — Player-facing service economy.
# Select one of your workers in Workforce -> Offer Service, then right-click a landed ruler.
domcom_csr_offer_selected_service_interaction = {
    category = interaction_category_friendly
    interface_priority = 72
    common_interaction = yes
    icon = carnx_chain
    desc = domcom_csr_offer_selected_service_interaction_desc

    is_shown = {
        scope:actor = {
            is_ai = no
            has_variable = domcom_csr_selected_service_slave
            has_variable = domcom_csr_selected_service_price
            var:domcom_csr_selected_service_slave = {
                is_alive = yes
                domcom_csr_can_offer_service_trigger = yes
                has_relation_slave_owner = scope:actor
                NOT = { has_character_flag = domcom_csr_military_contract_active }
                NOT = { has_character_flag = domcom_csr_external_service_cooldown }
            }
        }
        scope:recipient = { is_alive = yes is_landed = yes }
        scope:actor = { NOT = { this = scope:recipient } }
    }

    is_valid_showing_failures_only = {
        scope:recipient = {
            in_diplomatic_range = scope:actor
            short_term_gold >= scope:actor.var:domcom_csr_selected_service_price
        }
        trigger_if = {
            limit = { scope:actor.var:domcom_csr_selected_service_slave = { cse_is_assigned_as_military_slave_trigger = yes } }
            scope:recipient = { is_at_war = yes }
        }
        trigger_if = {
            limit = { scope:actor.var:domcom_csr_selected_service_slave = { domcom_csr_service_job_is_sexual_trigger = yes } }
            scope:recipient = { age >= 18 }
        }
    }

    auto_accept = no
    ai_accept = {
        base = 70
        modifier = { scope:actor.var:domcom_csr_selected_service_slave = { cse_is_assigned_as_labour_slave_trigger = yes } add = 15 }
        modifier = { scope:actor.var:domcom_csr_selected_service_slave = { cse_is_assigned_as_military_slave_trigger = yes } scope:recipient = { is_at_war = yes } add = 25 }
        modifier = { scope:actor.var:domcom_csr_selected_service_slave = { domcom_csr_service_job_is_sexual_trigger = yes } scope:recipient = { has_trait = lustful } add = 25 }
        modifier = { scope:actor.var:domcom_csr_selected_service_slave = { domcom_csr_service_job_is_sexual_trigger = yes } scope:recipient = { has_trait = chaste } add = -40 }
    }

    on_accept = {
        scope:actor = {
            save_scope_as = domcom_csr_service_owner
            var:domcom_csr_selected_service_slave = { save_scope_as = domcom_csr_service_slave }
        }
        scope:recipient = { save_scope_as = domcom_csr_service_client }
        if = {
            limit = { scope:domcom_csr_service_slave = { cse_is_assigned_as_military_slave_trigger = yes } }
            scope:domcom_csr_service_slave = { domcom_csr_start_military_service_contract_effect = yes }
        }
        else = { scope:domcom_csr_service_slave = { domcom_csr_execute_immediate_service_effect = yes } }
        scope:domcom_csr_service_owner = {
            remove_variable = domcom_csr_selected_service_slave
            remove_variable = domcom_csr_selected_service_price
        }
    }

    ai_will_do = { base = 0 }
}

# A human ruler can also initiate the transaction from a foreign owner's visibly listed worker.
domcom_csr_hire_listed_slave_service_interaction = {
    category = interaction_category_friendly
    interface_priority = 71
    common_interaction = yes
    icon = carnx_chain
    desc = domcom_csr_hire_listed_slave_service_interaction_desc

    is_shown = {
        scope:actor = { is_ai = no is_alive = yes is_landed = yes }
        scope:recipient = {
            is_alive = yes
            has_trait = slave
            has_variable = domcom_csr_service_listed
            domcom_csr_can_offer_service_trigger = yes
            NOT = { has_relation_slave_owner = scope:actor }
            NOT = { has_character_flag = domcom_csr_military_contract_active }
            NOT = { has_character_flag = domcom_csr_external_service_cooldown }
        }
    }

    is_valid_showing_failures_only = {
        scope:actor = {
            short_term_gold >= scope:recipient.domcom_csr_service_price_value
        }
        scope:recipient = {
            any_relation = {
                type = slave_owner
                is_alive = yes
                in_diplomatic_range = scope:actor
                count >= 1
            }
        }
        trigger_if = {
            limit = { scope:recipient = { cse_is_assigned_as_military_slave_trigger = yes } }
            scope:actor = { is_at_war = yes }
        }
        trigger_if = {
            limit = { scope:recipient = { domcom_csr_service_job_is_sexual_trigger = yes } }
            scope:actor = { age >= 18 }
        }
    }

    auto_accept = yes
    on_accept = {
        scope:actor = { save_scope_as = domcom_csr_service_client }
        scope:recipient = {
            save_scope_as = domcom_csr_service_slave
            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 }
    }
    ai_will_do = { base = 0 }
}

