﻿# Dominion of Communion — Ruler Designer body-choice persistence (2.5.10)
# The visible anatomy traits are allowed in Ruler Designer at any age, but minors do not keep the
# visible trait in play. We capture the selected tier before cleanup and materialize measurements at 18.

domcom_capture_ruler_designer_body_choices_effect = {
    # Endowment choice: only preserve it when this character can legitimately express Endowment.
    if = {
        limit = {
            domcom_should_express_endowment_trigger = yes
            OR = {
                has_trait = domcom_endowment_micro
                has_trait = domcom_endowment_small
                has_trait = domcom_endowment_average
                has_trait = domcom_endowment_big
                has_trait = domcom_endowment_hung
                has_trait = domcom_endowment_massive
            }
        }
        if = { limit = { has_trait = domcom_endowment_massive } set_variable = { name = domcom_designer_endowment_choice value = flag:massive } }
        else_if = { limit = { has_trait = domcom_endowment_hung } set_variable = { name = domcom_designer_endowment_choice value = flag:hung } }
        else_if = { limit = { has_trait = domcom_endowment_big } set_variable = { name = domcom_designer_endowment_choice value = flag:big } }
        else_if = { limit = { has_trait = domcom_endowment_average } set_variable = { name = domcom_designer_endowment_choice value = flag:average } }
        else_if = { limit = { has_trait = domcom_endowment_small } set_variable = { name = domcom_designer_endowment_choice value = flag:small } }
        else = { set_variable = { name = domcom_designer_endowment_choice value = flag:micro } }
    }

    # Breast choice: CK3 sex is female for the normal Breast Profile path. Carnalitas futanari women
    # therefore preserve this independently from their Endowment choice.
    if = {
        limit = {
            is_female = yes
            OR = {
                has_trait = domcom_breast_flat
                has_trait = domcom_breast_small
                has_trait = domcom_breast_average
                has_trait = domcom_breast_full
                has_trait = domcom_breast_large
                has_trait = domcom_breast_very_large
            }
        }
        if = { limit = { has_trait = domcom_breast_very_large } set_variable = { name = domcom_designer_breast_choice value = flag:very_large } }
        else_if = { limit = { has_trait = domcom_breast_large } set_variable = { name = domcom_designer_breast_choice value = flag:large } }
        else_if = { limit = { has_trait = domcom_breast_full } set_variable = { name = domcom_designer_breast_choice value = flag:full } }
        else_if = { limit = { has_trait = domcom_breast_average } set_variable = { name = domcom_designer_breast_choice value = flag:average } }
        else_if = { limit = { has_trait = domcom_breast_small } set_variable = { name = domcom_designer_breast_choice value = flag:small } }
        else = { set_variable = { name = domcom_designer_breast_choice value = flag:flat } }
    }

    # A child's selected tier is a future body instruction, not visible anatomy.
    if = {
        limit = { age < 18 }
        domcom_clear_endowment_traits_effect = yes
        domcom_clear_breast_traits_effect = yes
    }
}

domcom_seed_endowment_from_designer_choice_effect = {
    if = { limit = { var:domcom_designer_endowment_choice = flag:massive } domcom_seed_tier_massive_effect = yes }
    else_if = { limit = { var:domcom_designer_endowment_choice = flag:hung } domcom_seed_tier_hung_effect = yes }
    else_if = { limit = { var:domcom_designer_endowment_choice = flag:big } domcom_seed_tier_big_effect = yes }
    else_if = { limit = { var:domcom_designer_endowment_choice = flag:average } domcom_seed_tier_average_effect = yes }
    else_if = { limit = { var:domcom_designer_endowment_choice = flag:small } domcom_seed_tier_small_effect = yes }
    else = { domcom_seed_tier_micro_effect = yes }
}

domcom_seed_breast_from_designer_choice_effect = {
    domcom_seed_breast_underbust_effect = yes
    if = { limit = { var:domcom_designer_breast_choice = flag:very_large } domcom_seed_breast_very_large_effect = yes }
    else_if = { limit = { var:domcom_designer_breast_choice = flag:large } domcom_seed_breast_large_effect = yes }
    else_if = { limit = { var:domcom_designer_breast_choice = flag:full } domcom_seed_breast_full_effect = yes }
    else_if = { limit = { var:domcom_designer_breast_choice = flag:average } domcom_seed_breast_average_effect = yes }
    else_if = { limit = { var:domcom_designer_breast_choice = flag:small } domcom_seed_breast_small_effect = yes }
    else = { domcom_seed_breast_flat_effect = yes }
}


# ==========================================================================
# v2.5.1 — POWER FANTASY / CHARACTER OVERRIDE
# Deliberate player tool. These effects rewrite only the requested physical profile, then relock it.
# Mastery/preferences are preserved unless their corresponding override option is explicitly chosen.
# ==========================================================================
domcom_power_override_clear_endowment_effect = {
    remove_variable = domcom_length_tenths
    remove_variable = domcom_girth_tenths
    remove_variable = domcom_locked_length_tenths
    remove_variable = domcom_locked_girth_tenths
    remove_variable = domcom_canonical_length_tenths
    remove_variable = domcom_canonical_girth_tenths
    remove_variable = domcom_locked_endowment_category
    remove_variable = domcom_endowment_category
    remove_variable = domcom_endowment_index
    remove_character_flag = domcom_endowment_locked
    domcom_clear_endowment_traits_effect = yes
    domcom_rebuild_clear_external_traits_effect = yes
}

domcom_power_override_apply_endowment_effect = {
    domcom_power_override_clear_endowment_effect = yes
    domcom_seed_endowment_from_designer_choice_effect = yes
    domcom_assign_endowment_effect = yes
    domcom_initialize_endowment_mastery_effect = yes
}

domcom_power_override_clear_breast_effect = {
    remove_variable = domcom_underbust_tenths
    remove_variable = domcom_bust_tenths
    remove_variable = domcom_breast_fullness_tenths
    remove_variable = domcom_locked_underbust_tenths
    remove_variable = domcom_locked_bust_tenths
    remove_variable = domcom_locked_breast_fullness_tenths
    remove_variable = domcom_breast_category
    domcom_clear_breast_traits_effect = yes
}

domcom_power_override_apply_breast_effect = {
    domcom_power_override_clear_breast_effect = yes
    domcom_seed_breast_from_designer_choice_effect = yes
    domcom_assign_breast_profile_effect = yes
    domcom_initialize_breast_mastery_effect = yes
}

domcom_power_override_set_endowment_mastery_effect = {
    domcom_initialize_endowment_mastery_effect = yes
    set_variable = { name = domcom_endowment_mastery_xp value = var:domcom_power_override_mastery_value }
    if = { limit = { var:domcom_endowment_mastery_xp < 0 } set_variable = { name = domcom_endowment_mastery_xp value = 0 } }
    if = { limit = { var:domcom_endowment_mastery_xp > 32 } set_variable = { name = domcom_endowment_mastery_xp value = 32 } }
    # Rebuild the native 0..100 path from the authoritative mirror so the visual track matches immediately.
    remove_character_flag = domcom_mastery_track_normalized_v250
    remove_character_flag = domcom_native_endowment_mastery_seeded
    domcom_sync_endowment_mastery_trait_effect = yes
    remove_variable = domcom_power_override_mastery_value
}

domcom_power_override_set_breast_mastery_effect = {
    domcom_initialize_breast_mastery_effect = yes
    set_variable = { name = domcom_breast_mastery_xp value = var:domcom_power_override_mastery_value }
    if = { limit = { var:domcom_breast_mastery_xp < 0 } set_variable = { name = domcom_breast_mastery_xp value = 0 } }
    if = { limit = { var:domcom_breast_mastery_xp > 64 } set_variable = { name = domcom_breast_mastery_xp value = 64 } }
    remove_character_flag = domcom_native_breast_mastery_seeded
    domcom_clear_breast_traits_effect = yes
    domcom_assign_breast_profile_effect = yes
    domcom_initialize_breast_mastery_effect = yes
    domcom_breast_mastery_refresh_rank_effect = yes
    remove_variable = domcom_power_override_mastery_value
}


# --------------------------------------------------------------------------
# v2.6.67 — MANUAL ATTRACTION PREFERENCE REROLLS
# A category button fixes the requested category but rolls a fresh legal measurement
# pair every time it is pressed. This reuses the same category seed tables as normal
# preference generation instead of maintaining a second set of preset values.
# --------------------------------------------------------------------------
domcom_power_override_set_endowment_preference_effect = {
    if = {
        limit = {
            age >= 18
            is_attracted_to_men = yes
            has_variable = domcom_power_override_preference_choice
        }
        remove_variable = domcom_pref_length_tenths
        remove_variable = domcom_pref_girth_tenths
        remove_variable = domcom_preferred_endowment_index

        if = {
            limit = { var:domcom_power_override_preference_choice = flag:micro }
            set_variable = { name = domcom_size_preference_primary value = flag:micro }
            domcom_seed_preference_micro_effect = yes
        }
        else_if = {
            limit = { var:domcom_power_override_preference_choice = flag:small }
            set_variable = { name = domcom_size_preference_primary value = flag:small }
            domcom_seed_preference_small_effect = yes
        }
        else_if = {
            limit = { var:domcom_power_override_preference_choice = flag:average }
            set_variable = { name = domcom_size_preference_primary value = flag:average }
            domcom_seed_preference_average_effect = yes
        }
        else_if = {
            limit = { var:domcom_power_override_preference_choice = flag:big }
            set_variable = { name = domcom_size_preference_primary value = flag:big }
            domcom_seed_preference_big_effect = yes
        }
        else_if = {
            limit = { var:domcom_power_override_preference_choice = flag:hung }
            set_variable = { name = domcom_size_preference_primary value = flag:hung }
            domcom_seed_preference_hung_effect = yes
        }
        else = {
            set_variable = { name = domcom_size_preference_primary value = flag:massive }
            domcom_seed_preference_massive_effect = yes
        }

        domcom_sync_size_preference_trait_effect = yes
        if = {
            limit = {
                is_female = yes
                NOT = { is_target_in_global_variable_list = { name = domcom_all_preference_profiles target = this } }
            }
            add_to_global_variable_list = { name = domcom_all_preference_profiles target = this }
        }
    }
    remove_variable = domcom_power_override_preference_choice
}

domcom_power_override_randomize_endowment_preference_effect = {
    remove_variable = domcom_size_preference_primary
    remove_variable = domcom_pref_length_tenths
    remove_variable = domcom_pref_girth_tenths
    remove_variable = domcom_preferred_endowment_index
    domcom_clear_size_preference_traits_effect = yes
    domcom_assign_size_preference_effect = yes
}

domcom_power_override_set_breast_preference_effect = {
    if = {
        limit = {
            age >= 18
            is_attracted_to_women = yes
            has_variable = domcom_power_override_preference_choice
        }
        # Preserve the preferred frame and reroll fullness inside the selected category.
        # Old/uninitialized characters receive a neutral frame once.
        if = {
            limit = { NOT = { has_variable = domcom_pref_underbust_tenths } }
            set_variable = { name = domcom_pref_underbust_tenths value = 340 }
        }
        remove_variable = domcom_pref_breast_fullness_tenths

        if = {
            limit = { var:domcom_power_override_preference_choice = flag:flat }
            random_list = {
                50 = { set_variable = { name = domcom_pref_breast_fullness_tenths value = 10 } }
                50 = { set_variable = { name = domcom_pref_breast_fullness_tenths value = 15 } }
            }
        }
        else_if = {
            limit = { var:domcom_power_override_preference_choice = flag:small }
            random_list = {
                50 = { set_variable = { name = domcom_pref_breast_fullness_tenths value = 20 } }
                50 = { set_variable = { name = domcom_pref_breast_fullness_tenths value = 25 } }
            }
        }
        else_if = {
            limit = { var:domcom_power_override_preference_choice = flag:average }
            random_list = {
                33 = { set_variable = { name = domcom_pref_breast_fullness_tenths value = 30 } }
                34 = { set_variable = { name = domcom_pref_breast_fullness_tenths value = 35 } }
                33 = { set_variable = { name = domcom_pref_breast_fullness_tenths value = 40 } }
            }
        }
        else_if = {
            limit = { var:domcom_power_override_preference_choice = flag:full }
            random_list = {
                50 = { set_variable = { name = domcom_pref_breast_fullness_tenths value = 45 } }
                50 = { set_variable = { name = domcom_pref_breast_fullness_tenths value = 50 } }
            }
        }
        else_if = {
            limit = { var:domcom_power_override_preference_choice = flag:large }
            random_list = {
                33 = { set_variable = { name = domcom_pref_breast_fullness_tenths value = 55 } }
                34 = { set_variable = { name = domcom_pref_breast_fullness_tenths value = 60 } }
                33 = { set_variable = { name = domcom_pref_breast_fullness_tenths value = 65 } }
            }
        }
        else = {
            random_list = {
                50 = { set_variable = { name = domcom_pref_breast_fullness_tenths value = 70 } }
                50 = { set_variable = { name = domcom_pref_breast_fullness_tenths value = 80 } }
            }
        }

        domcom_sync_breast_preference_trait_effect = yes
        if = {
            limit = { NOT = { is_target_in_global_variable_list = { name = domcom_all_breast_preferences target = this } } }
            add_to_global_variable_list = { name = domcom_all_breast_preferences target = this }
        }
    }
    remove_variable = domcom_power_override_preference_choice
}

domcom_power_override_randomize_breast_preference_effect = {
    remove_variable = domcom_pref_underbust_tenths
    remove_variable = domcom_pref_breast_fullness_tenths
    remove_variable = domcom_breast_preference_category
    domcom_clear_breast_preference_traits_effect = yes
    domcom_assign_breast_preference_effect = yes
}
