dsi_demand_sex_interaction = { category = interaction_category_friendly desc = wd_demand_sex_interaction_desc interface_priority = 40 icon = carn_icon should_use_extra_icon = { scope:actor = { has_usable_hook = scope:recipient NOT = { has_relation_slave = scope:recipient } } } extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" redirect = { scope:recipient = { save_scope_as = secondary_recipient } } populate_recipient_list = { scope:recipient = { add_to_list = characters } scope:actor = { every_relation = { type = slave limit = { this != scope:recipient is_adult = yes is_imprisoned = no is_healthy = yes scope:actor = {has_usable_hook = prev} OR = { AND = { has_game_rule = wd_sex_requires_same_location_enabled is_at_same_location = scope:actor } NOT = {has_game_rule = wd_sex_requires_same_location_enabled} } } add_to_list = characters } } } is_shown = { NOR = { has_game_rule = carn_sex_interaction_disabled has_game_rule = carn_content_consent_always scope:actor = scope:recipient } scope:actor = { is_adult = yes has_usable_hook = scope:recipient OR = { is_attracted_to_gender_of = scope:recipient is_ai = no } } scope:recipient = { is_adult = yes NOT = {is_consort_of = scope:actor} NOT = {has_relation_lover = scope:actor} } } is_valid_showing_failures_only = { scope:actor = { is_imprisoned = no is_healthy = yes } scope:recipient = { is_imprisoned = no trigger_if = { limit = { has_game_rule = wd_sex_requires_same_location_enabled } custom_tooltip = { text = "wd_not_same_location_character_interaction_tt" is_at_same_location = scope:actor } } is_healthy = yes } } # Threesome send_option = { is_shown = { scope:actor = { is_ai = no } } is_valid = { custom_tooltip = { text = "wd_secondary_target_same_as_primary_target_tt" scope:recipient != scope:secondary_recipient } } flag = threesome localization = "wd_sex_threesome_option" current_description = { desc = "wd_sex_threesome_option_desc" } } send_options_exclusive = yes # Added by Maverick send_option = { flag = vag_option localization = "'Vaginal'" } send_option = { flag = anal_option localization = "'Anal'" } send_option = { flag = oral_option localization = "'Oral'" } on_accept = { scope:actor = { if = { limit = {NOT ={ scope:threesome = yes }} hidden_effect = { use_hook = scope:recipient # for slaves and concubines, get scenes ranging from consensual to noncon if = { limit = { scope:actor = { has_relation_slave_owner = scope:recipient } } # Consensual: I'm into you, and I either like you or you're super hot if = { limit = { scope:recipient = { OR = { opinion = { target = scope:actor value >= 50 } scope:actor = { attraction >= 20 } # if you're hot enough they'll happily hatefuck you } is_attracted_to_gender_of = scope:actor } } wd_sex_scene_is_consensual_effect = yes } # dubcon: Either I'm into you but not that into you, or I don't swing that way but I like you enough to humor you else_if = { limit = { scope:recipient = { OR = { AND = { is_attracted_to_gender_of = scope:actor OR = { opinion = { target = scope:actor value > 0 } scope:actor = { attraction >= 10 } # if you're hot enough they'll be kinda ok with it } } AND = { NOT = { is_attracted_to_gender_of = scope:actor } opinion = { target = scope:actor value >= 75 } } } } } wd_sex_scene_is_dubcon_effect = yes wd_sex_scene_character_is_dom_player_effect = yes } # Noncon: I either hate you or I don't swing this way, get me outta here else = { wd_sex_scene_is_noncon_effect = yes wd_sex_scene_character_is_dom_player_effect = yes } } # get dubcon for characters that dislike you / are not attracted to you (but accept sex with you for some reason, like being a prostitute) else_if = { limit = { scope:recipient = { OR = { opinion = { target = scope:actor value < 0 } NOT = { is_attracted_to_gender_of = scope:actor } } } } wd_sex_scene_is_dubcon_effect = yes wd_sex_scene_character_is_dom_player_effect = yes } # fallback to dubcon scene, as demanding sex else = { wd_sex_scene_is_dubcon_effect = yes wd_sex_scene_character_is_dom_player_effect = yes } if = { limit = { scope:vag_option = yes } wd_sex_scene_is_vaginal_effect = yes wd_sex_scene_is_cum_inside_effect = yes } else_if = { limit = { scope:anal_option = yes } wd_sex_scene_is_anal_effect = yes } else_if = { limit = { scope:oral_option = yes } wd_sex_scene_is_oral_effect = yes } #If selected trio then else = { wd_sex_scene_is_vaginal_effect = yes wd_sex_scene_is_cum_inside_effect = yes } wd_sex_scene_character_is_giving_player_effect = yes } wd_had_sex_show_tooltip_effect = { PARTNER = scope:recipient } #Stress wd_sex_stress_effect = { PARTNER = scope:recipient } scope:recipient = { wd_sex_stress_effect = { PARTNER = scope:actor } } # actually fire the sex scene hidden_effect = { if = { limit = {is_ai = no} wd_sex_scene_effect = { PARTNER = scope:recipient } } else_if = { limit = {scope:recipient = {is_ai = no}} scope:recipient = { wd_transfer_sex_scene_flag_from_partner = {PARTNER = scope:actor} wd_sex_scene_effect = { PARTNER = scope:actor } } } else = { wd_had_sex_with_effect = { PARTNER = scope:recipient } } } } else = { #Threesome #Using hooks hidden_effect = { use_hook = scope:recipient use_hook = scope:secondary_recipient } wd_sex_scene_is_vaginal_effect = yes wd_sex_scene_is_cum_inside_effect = yes wd_had_threesome_show_tooltip_effect = { PARTNER = scope:recipient PARTNER_2 = scope:secondary_recipient } wd_threesome_stress_effect = { PARTNER = scope:recipient PARTNER_2 = scope:secondary_recipient } scope:recipient = { wd_threesome_stress_effect = { PARTNER = scope:actor PARTNER_2 = scope:secondary_recipient } } scope:secondary_recipient = { wd_threesome_stress_effect = { PARTNER = scope:actor PARTNER_2 = scope:recipient } } hidden_effect = { trigger_event = wd_sex_scene_threesome.001 } } } } auto_accept = yes ai_targets = { ai_recipients = hooked_characters } ai_frequency = 24 ai_potential = { is_adult = yes } ai_will_do = { base = 10 modifier = { add = 30 has_trait = lustful } modifier = { add = 30 has_trait = rakish } modifier = { add = -30 has_trait = chaste } opinion_modifier = { opinion_target = scope:recipient who = scope:actor multiplier = -0.5 } } }