コード例 #1
0
def _try_to_take_and_use_condoms(sim_identifier):
    sim = TurboManagerUtil.Sim.get_sim_instance(sim_identifier)
    if sim is None:
        return (False, 0)
    if sim_ev(sim).active_sex_handler is None:
        return (False, 0)
    sims_that_can_impregnate_list = list()
    for actor_sim in sim_ev(sim).active_sex_handler.get_actors_sim_info_gen():
        while sim_ev(actor_sim).has_condom_on is False and has_sim_trait(
                actor_sim, SimTrait.GENDEROPTIONS_PREGNANCY_CANIMPREGNATE):
            sims_that_can_impregnate_list.append(actor_sim)
    if not sims_that_can_impregnate_list:
        return (False, 0)
    condoms_count = get_object_amount_in_sim_inventory(
        sim, CONDOM_WRAPPER_OBJECT_ID)
    if condoms_count < len(sims_that_can_impregnate_list):
        return (False, condoms_count)
    if not remove_object_from_sim_inventory(
            sim, CONDOM_WRAPPER_OBJECT_ID, len(sims_that_can_impregnate_list)):
        return (False, len(sims_that_can_impregnate_list))
    for actor_sim in sims_that_can_impregnate_list:
        sim_ev(actor_sim).has_condom_on = True
        _update_sim_condom_status_buff(actor_sim)
        increase_sim_ww_statistic(actor_sim, 'times_used_contraception')
    return (True, len(sims_that_can_impregnate_list))
コード例 #2
0
 def on_interaction_start(cls, interaction_instance):
     sim = cls.get_interaction_sim(interaction_instance)
     target = cls.get_interaction_target(interaction_instance)
     sim_skill_level = get_sim_nudity_skill_level(sim)
     target_skill_level = get_sim_nudity_skill_level(target)
     if sim_skill_level > target_skill_level:
         if TurboSimUtil.Sim.is_npc(target):
             apply_nudity_skill_influence(target,
                                          sim_skill_level / 100,
                                          overall_limit=2.5)
         else:
             increase_sim_nudity_skill(target,
                                       sim_skill_level,
                                       extra_fatigue=2.5)
     elif sim_skill_level < target_skill_level:
         if TurboSimUtil.Sim.is_npc(sim):
             apply_nudity_skill_influence(sim,
                                          target_skill_level / 100,
                                          overall_limit=2.5)
         else:
             increase_sim_nudity_skill(sim,
                                       target_skill_level,
                                       extra_fatigue=2.5)
     if TurboSimUtil.Gender.get_gender(sim) in get_sim_preferenced_genders(
             target):
         change_sim_desire_level(target, 5)
     if TurboSimUtil.Gender.get_gender(
             target) in get_sim_preferenced_genders(sim):
         change_sim_desire_level(sim, 5)
     increase_sim_ww_statistic(sim, 'times_talked_exhibitionism')
     increase_sim_ww_statistic(target, 'times_talked_exhibitionism')
     return True
コード例 #3
0
def _update_actors_light_other_flags(sex_handler, sims_list):
    for (_, sim_info) in sims_list:
        set_sim_statistic_value(sim_info, 1, SimCommodity.WW_IS_SIM_IN_SEX)
        increase_sim_ww_statistic(
            sim_info,
            'time_spent_on_sex_' + str(sex_handler.get_animation_instance().
                                       get_sex_category().name.lower()))
        set_sim_penis_state(sim_info, True, 9999, set_if_nude=True)
コード例 #4
0
def _nudity_reaction(sim, target, only_mixer=False, force=False):
    increase_sim_ww_statistic(sim, 'times_reacted_to_nudity')
    increase_sim_ww_statistic(target, 'times_been_seen_nude')
    if _is_positive_to_sim_nudity(sim, target):
        positive_reaction_affordance = random.choice(
            (SimInteraction.WW_NUDITY_REACTION_POSITIVE_1,
             SimInteraction.WW_NUDITY_REACTION_POSITIVE_2,
             SimInteraction.WW_NUDITY_REACTION_POSITIVE_3))
        si_result = TurboSimUtil.Interaction.push_affordance(
            sim,
            positive_reaction_affordance,
            target=target,
            interaction_context=TurboInteractionUtil.InteractionContext.
            SOURCE_SCRIPT,
            insert_strategy=TurboInteractionUtil.QueueInsertStrategy.NEXT if
            force is False else TurboInteractionUtil.QueueInsertStrategy.FIRST,
            priority=TurboInteractionUtil.Priority.High
            if force is False else TurboInteractionUtil.Priority.Critical,
            run_priority=TurboInteractionUtil.Priority.High
            if force is False else TurboInteractionUtil.Priority.Critical
        ) if only_mixer is False else None
    else:
        si_result = TurboSimUtil.Interaction.push_affordance(
            sim,
            SimInteraction.WW_NUDITY_REACTION_SHOCK,
            target=target,
            interaction_context=TurboInteractionUtil.InteractionContext.
            SOURCE_SCRIPT,
            insert_strategy=TurboInteractionUtil.QueueInsertStrategy.NEXT if
            force is False else TurboInteractionUtil.QueueInsertStrategy.FIRST,
            priority=TurboInteractionUtil.Priority.High
            if force is False else TurboInteractionUtil.Priority.Critical,
            run_priority=TurboInteractionUtil.Priority.High
            if force is False else TurboInteractionUtil.Priority.Critical
        ) if only_mixer is False else None
    if not si_result and (
            si_result is None or
            TurboInteractionUtil.can_interaction_fallback_to_mixer_interaction(
                sim, si_result.execute_result.interaction)):
        si_result = TurboSimUtil.Interaction.push_affordance(
            sim,
            SimInteraction.WW_NUDITY_REACTION_MIXER,
            target=target,
            interaction_context=TurboInteractionUtil.InteractionContext.
            SOURCE_REACTION,
            insert_strategy=TurboInteractionUtil.QueueInsertStrategy.NEXT)
    if si_result:
        if TurboSimUtil.Age.get_age(sim) == TurboSimUtil.Age.CHILD:
            add_sim_buff(sim, SimBuff.PRIVACY_EMBARRASSED)
        cooldown_offset = random.randint(-1, 2)
        sim_ev(sim).full_nudity_reaction_cooldown = 12 + cooldown_offset
        sim_ev(sim).inner_nudity_reaction_cooldown = 6 + cooldown_offset
        set_sim_penis_state(sim, True, 8, set_if_nude=True)
        return True
    return False
コード例 #5
0
 def on_interaction_start(cls, interaction_instance):
     sim = cls.get_interaction_sim(interaction_instance)
     target = cls.get_interaction_target(interaction_instance)
     _flash_sim_result(sim, target)
     increase_sim_ww_statistic(sim, 'times_flashed_top')
     nudity_notification(
         text=2396534391,
         text_tokens=(sim, target),
         icon=sim,
         sims=(sim, target),
         is_autonomy=cls.get_interaction_source(interaction_instance) ==
         TurboInteractionUtil.InteractionSource.AUTONOMY)
     return True
コード例 #6
0
 def on_interaction_start(cls, interaction_instance):
     sim = cls.get_interaction_sim(interaction_instance)
     target = cls.get_interaction_target(interaction_instance)
     _flash_sim_result(sim, target)
     increase_sim_ww_statistic(sim, 'times_flashed_bottom')
     set_sim_penis_state(sim, True, 5)
     nudity_notification(
         text=1399400780,
         text_tokens=(sim, target),
         icon=sim,
         sims=(sim, target),
         is_autonomy=cls.get_interaction_source(interaction_instance) ==
         TurboInteractionUtil.InteractionSource.AUTONOMY)
     return True
コード例 #7
0
 def on_interaction_start(cls, interaction_instance):
     sim = cls.get_interaction_sim(interaction_instance)
     target = cls.get_interaction_target(interaction_instance)
     if TurboSimUtil.Sim.is_npc(target):
         apply_nudity_skill_influence(target, 0.1, overall_limit=4.1)
     else:
         increase_sim_nudity_skill(
             target,
             get_nudity_skill_points_modifier(
                 NuditySkillIncreaseReason.SOCIAL_COMPLIMENT),
             extra_fatigue=2.5)
     if TurboSimUtil.Gender.get_gender(sim) in get_sim_preferenced_genders(
             target):
         change_sim_desire_level(target, 10)
         change_sim_desire_level(sim, 5)
     increase_sim_ww_statistic(sim, 'times_talked_exhibitionism')
     return True
コード例 #8
0
 def on_interaction_start(cls, interaction_instance):
     sim = cls.get_interaction_sim(interaction_instance)
     household = TurboSimUtil.Household.get_household(sim)
     if household is None:
         return False
     if not TurboWorldUtil.Household.subtract_funds(household, 1500):
         return False
     sim_info = TurboManagerUtil.Sim.get_sim_info(sim)
     TurboSimUtil.Pregnancy.clear_pregnancy(sim_info)
     if has_sim_trait(sim_info, SimTrait.HATESCHILDREN):
         add_sim_buff(sim_info, SimBuff.WW_PREGNANCY_TERMINATION_HAPPY, reason=3441893392)
     else:
         add_sim_buff(sim_info, SimBuff.WW_PREGNANCY_TERMINATION_SAD, reason=3441893392)
     display_notification(text=3344178125, text_tokens=(sim_info,), title=2364600527, secondary_icon=sim_info)
     increase_sim_ww_statistic(sim_info, 'times_terminated_pregnancy')
     TurboSimUtil.Interaction.push_affordance(sim, SimInteraction.WW_GO_HOME, interaction_context=TurboInteractionUtil.InteractionContext.SOURCE_SCRIPT, insert_strategy=TurboInteractionUtil.QueueInsertStrategy.NEXT, must_run_next=True, priority=TurboInteractionUtil.Priority.Critical, run_priority=TurboInteractionUtil.Priority.Critical)
     return True
コード例 #9
0
def apply_sim_cum_layer(sim_identifier, cum_layer_types, force=False):
    sim_info = TurboManagerUtil.Sim.get_sim_info(sim_identifier)
    has_applied = False
    for cum_layer_type in cum_layer_types:
        if not cum_layer_type == CumLayerType.DISABLED:
            if cum_layer_type == CumLayerType.NONE:
                continue
            if cum_layer_type == CumLayerType.V****A and has_sim_trait(sim_info, SimTrait.GENDEROPTIONS_TOILET_STANDING):
                cum_layer_type = CumLayerType.BUTT
            cum_cas_id = get_cum_layer_cas_id(cum_layer_type)
            if has_sim_cas_part_id(sim_info, cum_cas_id) and force is False:
                continue
            set_first_free_skin_overlay_for_every_outfit(sim_info, cum_cas_id)
            increase_sim_ww_statistic(sim_info, 'times_received_cum_' + str(cum_layer_type.name).lower())
            has_applied = True
    if has_applied is True:
        try:
            TurboSimUtil.CAS.refresh_outfit(sim_info)
        except:
            pass
        sim_ev(sim_info).cum_apply_time = TurboWorldUtil.Time.get_absolute_ticks() + 360000
コード例 #10
0
def apply_after_sex_functions(sex_handler, sims_list, is_ending=False):
    is_full_interaction = sex_handler.sim_minute_counter > 5
    if is_ending is True:
        if sex_handler.unsilence_phone_after_sex is True:
            TurboUIUtil.Phone.unsilence()
        if is_full_interaction is True:
            apply_after_sex_satisfaction(sims_list, sex_handler=sex_handler)
            _after_sex_buffs(sims_list)
        for (actor_id, sim_info) in sims_list:
            update_stapon(sim_info, force_remove=True)
            _after_sex_dress_up(sim_info)
            set_sim_penis_state(sim_info, True, 3)
            set_sim_desire_level(sim_info, 0)
            remove_sim_buff(sim_info, SimBuff.WW_DESIRE_POSITIVE)
            remove_sim_buff(sim_info, SimBuff.WW_DESIRE_NEGATIVE)
            while is_full_interaction is True:
                _after_sex_cum(sex_handler, actor_id, sim_info)
                if len(sims_list) > 1:
                    is_incest_sex = True in [
                        sim_info is not target_sim_info
                        and TurboSimUtil.Relationship.is_family(
                            sim_info, target_sim_info)
                        for (_, target_sim_info) in sims_list
                    ]
                    increase_sim_ww_statistic(sim_info, 'times_had_sex')
                    increase_sim_ww_statistic(sim_info, 'times_had_incest_sex')
                else:
                    increase_sim_ww_statistic(sim_info, 'times_had_solo_sex')
コード例 #11
0
def apply_sim_pregnancy(sim_identifier, partner_sim_identifier):
    pregnancy_result = TurboSimUtil.Pregnancy.start_pregnancy(
        sim_identifier, partner_sim_identifier)
    if pregnancy_result is False:
        return False
    remove_sim_buff(sim_identifier, SimBuff.WW_PREGNANCY_PERIOD_FINE)
    remove_sim_buff(sim_identifier, SimBuff.WW_PREGNANCY_PERIOD_FLIRTY)
    remove_sim_buff(sim_identifier, SimBuff.WW_PREGNANCY_PERIOD_DAZED)
    remove_sim_buff(sim_identifier, SimBuff.WW_PREGNANCY_PERIOD_SAD)
    remove_sim_buff(sim_identifier, SimBuff.WW_PREGNANCY_PERIOD_TENSE)
    remove_sim_buff(sim_identifier, SimBuff.WW_PREGNANCY_PERIOD_UNCOMFORTABLE)
    remove_sim_buff(sim_identifier,
                    SimBuff.WW_PREGNANCY_PERIOD_VAMPIRE_UNCOMFORTABLE)
    remove_sim_buff(sim_identifier, SimBuff.WW_PREGNANCY_CRAMPS_LOW)
    remove_sim_buff(sim_identifier, SimBuff.WW_PREGNANCY_CRAMPS_MEDIUM)
    remove_sim_buff(sim_identifier, SimBuff.WW_PREGNANCY_CRAMPS_HIGH)
    remove_sim_buff(sim_identifier, SimBuff.WW_PREGNANCY_TERMINATION_HAPPY)
    remove_sim_buff(sim_identifier, SimBuff.WW_PREGNANCY_TERMINATION_SAD)
    remove_sim_buff(sim_identifier, SimBuff.WW_PREGNANCY_MISCARRIAGE)
    increase_sim_ww_statistic(partner_sim_identifier, 'times_impregnated')
    increase_sim_ww_statistic(sim_identifier, 'times_got_pregnant')
    return True
コード例 #12
0
 def on_interaction_start(cls, interaction_instance):
     sim = cls.get_interaction_sim(interaction_instance)
     target = cls.get_interaction_target(interaction_instance)
     sim_skill_level = get_sim_nudity_skill_level(sim)
     if TurboSimUtil.Sim.is_npc(target):
         apply_nudity_skill_influence(target,
                                      0.05 * sim_skill_level,
                                      overall_limit=7.1)
         if random.uniform(0, 1) <= 0.1:
             add_sim_trait(target, SimTrait.WW_EXHIBITIONIST)
     else:
         increase_sim_nudity_skill(
             target,
             get_nudity_skill_points_modifier(
                 NuditySkillIncreaseReason.SOCIAL_CONVINCE),
             extra_fatigue=3.1)
     if TurboSimUtil.Gender.get_gender(sim) in get_sim_preferenced_genders(
             target):
         change_sim_desire_level(target, 10)
         change_sim_desire_level(sim, 5)
     increase_sim_ww_statistic(sim, 'times_talked_exhibitionism')
     increase_sim_ww_statistic(target, 'times_talked_exhibitionism')
     return True
コード例 #13
0
def take_birth_control_pill(sim_identifier, no_inventory=False):
    if no_inventory is False:
        sim = TurboManagerUtil.Sim.get_sim_instance(sim_identifier)
        if sim is None:
            return False
        if get_object_amount_in_sim_inventory(
                sim, BIRTH_CONTROL_PILL_OBJECT_ID) <= 0:
            return False
        if not remove_object_from_sim_inventory(
                sim, BIRTH_CONTROL_PILL_OBJECT_ID, 1):
            return False
    sim_info = TurboManagerUtil.Sim.get_sim_info(sim_identifier)
    sim_ev(
        sim_info
    ).day_used_birth_control_pills = TurboWorldUtil.Time.get_absolute_days()
    sim_ev(sim_info).birth_control_pill_power = 1
    update_sim_birth_control_status_buff(sim_info)
    increase_sim_ww_statistic(sim_info, 'times_used_contraception')
    if TurboSimUtil.Sim.is_player(sim_info):
        display_notification(text=949418969,
                             text_tokens=(sim_info, ),
                             title=1873179704,
                             secondary_icon=sim_info)
    return True
コード例 #14
0
def _general_sex_reaction(sim, sex_handler):
    skip_reaction = False
    if sex_handler.get_actors_amount(
    ) == 1 and sex_handler.get_animation_instance().get_sex_category(
    ) == SexCategoryType.TEASING:
        target = next(iter(sex_handler.get_actors_sim_instance_gen()))
        if target is not None:
            skip_reaction = True
            if TurboSimUtil.Gender.is_female(
                    target) and get_sim_actual_body_state(
                        target,
                        6) == BodyState.NUDE or get_sim_actual_body_state(
                            target, 7) == BodyState.NUDE:
                skip_reaction = False
    if skip_reaction is True:
        return False
    sex_creator_sim = TurboManagerUtil.Sim.get_sim_instance(
        sex_handler.get_creator_sim_id())
    if sex_creator_sim is None:
        return False
    (sex_reaction_data, sex_reaction_should_left,
     sex_reaction_target_override) = get_reaction_type(sim, sex_handler)
    if not get_sex_setting(SexSetting.PRIVACY_STATE, variable_type=bool):
        sex_reaction_should_left = False
    sim_id = TurboManagerUtil.Sim.get_sim_id(sim)
    if sex_reaction_should_left is True:
        if sim_id in sex_handler.go_away_sims_list:
            go_away_reaction_result = TurboSimUtil.Interaction.push_affordance(
                sim,
                SimInteraction.WW_GO_AWAY_FROM_SEX,
                target=sex_creator_sim,
                interaction_context=TurboInteractionUtil.InteractionContext.
                SOURCE_SCRIPT,
                insert_strategy=TurboInteractionUtil.QueueInsertStrategy.NEXT,
                must_run_next=True,
                priority=TurboInteractionUtil.Priority.High,
                run_priority=TurboInteractionUtil.Priority.High)
            return bool(go_away_reaction_result)
        sex_handler.go_away_sims_list.add(sim_id)
    else:
        sim_ev(sim).sex_reaction_handlers_list.append(
            sex_handler.get_identifier())
    if sim_id in sex_handler.has_reacted_sims_list:
        reaction_result = TurboSimUtil.Interaction.push_affordance(
            sim,
            sex_reaction_data[1],
            target=sex_reaction_target_override
            if sex_reaction_target_override is not None else sex_creator_sim,
            insert_strategy=TurboInteractionUtil.QueueInsertStrategy.NEXT,
            priority=TurboInteractionUtil.Priority.High,
            run_priority=TurboInteractionUtil.Priority.High,
            skip_if_running=True)
    else:
        reaction_result = TurboSimUtil.Interaction.push_affordance(
            sim,
            sex_reaction_data[1],
            target=sex_reaction_target_override
            if sex_reaction_target_override is not None else sex_creator_sim,
            insert_strategy=TurboInteractionUtil.QueueInsertStrategy.FIRST,
            must_run_next=True,
            priority=TurboInteractionUtil.Priority.Critical,
            run_priority=TurboInteractionUtil.Priority.Critical,
            skip_if_running=True)
    if reaction_result:
        increase_sim_ww_statistic(sim, 'times_reacted_to_sex')
        increase_sim_ww_statistic(sex_creator_sim, 'times_been_seen_in_sex')
        if sex_reaction_data[2] is not None:
            add_sim_buff(sim, sex_reaction_data[2])
        if sex_reaction_should_left is True:
            sim_ev(sim).sex_reaction_attempt_cooldown = 0
        sex_handler.has_reacted_sims_list.add(sim_id)
        return True
    return False
コード例 #15
0
def increase_sim_nudity_time_statistic(sim_identifier):
    sim_outfit_level = get_sim_outfit_level(sim_identifier)
    if sim_outfit_level == OutfitLevel.NUDE or sim_outfit_level == OutfitLevel.BATHING:
        increase_sim_ww_statistic(sim_identifier, 'time_spent_nude')
コード例 #16
0
def apply_asking_for_woohoo_relations(sim_identifier,
                                      target_sim_identifier,
                                      status,
                                      display_message=True):
    sim_info = TurboManagerUtil.Sim.get_sim_info(sim_identifier)
    target_sim_info = TurboManagerUtil.Sim.get_sim_info(target_sim_identifier)
    if sim_info is None or target_sim_info is None:
        return
    set_sim_motive_value(sim_info,
                         SimMotive.SOCIAL,
                         get_sim_motive_value(sim_info, SimMotive.SOCIAL) + 8,
                         skip_disabled=True)
    set_sim_motive_value(
        target_sim_info,
        SimMotive.SOCIAL,
        get_sim_motive_value(target_sim_info, SimMotive.SOCIAL) + 8,
        skip_disabled=True)
    if has_sim_trait(sim_info, SimTrait.EVIL) and has_sim_trait(
            sim_info, SimTrait.GOOD) or has_sim_trait(
                sim_info, SimTrait.GOOD) and has_sim_trait(
                    sim_info, SimTrait.EVIL):
        if random.uniform(0, 1) <= 0.05:
            add_sim_buff(sim_info, SimBuff.GOODVSEVIL_ANGRY)
        if random.uniform(0, 1) <= 0.05:
            add_sim_buff(target_sim_info, SimBuff.GOODVSEVIL_ANGRY)
        if random.uniform(0, 1) <= 0.05:
            add_sim_buff(sim_info, SimBuff.GOODVSEVIL_SAD)
        if random.uniform(0, 1) <= 0.05:
            add_sim_buff(target_sim_info, SimBuff.GOODVSEVIL_SAD)
        change_sim_statistic_value(sim_info, 50,
                                   SimCommodity.TRAIT_ROMANTIC_AFFECTION)
    if status is True:
        TurboSimUtil.Gender.set_gender_preference(
            sim_info, TurboSimUtil.Gender.get_gender(target_sim_info),
            TurboSimUtil.Gender.get_gender_preference(
                sim_info, TurboSimUtil.Gender.get_gender(target_sim_info)) +
            10)
        change_sim_statistic_value(sim_info, 10,
                                   SimCommodity.BUFF_SOCIAL_FLIRTYCONVERSATION)
        change_sim_statistic_value(target_sim_info, 10,
                                   SimCommodity.BUFF_SOCIAL_FLIRTYCONVERSATION)
        change_sim_statistic_value(sim_info, -10,
                                   SimCommodity.BUFF_SOCIAL_ANGRYCONVERSATION)
        change_sim_statistic_value(target_sim_info, -10,
                                   SimCommodity.BUFF_SOCIAL_ANGRYCONVERSATION)
        change_sim_statistic_value(
            sim_info, -10, SimCommodity.BUFF_SOCIAL_EMBARRASSINGCONVERSATION)
        change_sim_statistic_value(
            target_sim_info, -10,
            SimCommodity.BUFF_SOCIAL_EMBARRASSINGCONVERSATION)
        change_sim_statistic_value(sim_info, -10,
                                   SimCommodity.BUFF_SOCIAL_BORINGCONVERSATION)
        change_sim_statistic_value(target_sim_info, -10,
                                   SimCommodity.BUFF_SOCIAL_BORINGCONVERSATION)
        change_sim_statistic_value(sim_info, -10,
                                   SimCommodity.BUFF_SOCIAL_HAPPYCONVERSATION)
        change_sim_statistic_value(target_sim_info, -10,
                                   SimCommodity.BUFF_SOCIAL_HAPPYCONVERSATION)
        change_sim_statistic_value(
            sim_info, -10, SimCommodity.BUFF_SOCIAL_PLAYFULCONVERSATION)
        change_sim_statistic_value(
            target_sim_info, -10, SimCommodity.BUFF_SOCIAL_PLAYFULCONVERSATION)
        change_relationship_with_sim(sim_info, target_sim_info,
                                     ShortTermRelationshipTrackType.ROMANCE, 5)
        change_relationship_with_sim(target_sim_info, sim_info,
                                     ShortTermRelationshipTrackType.ROMANCE, 5)
        current_fun_short_rel_amount = get_relationship_with_sim(
            sim_info, target_sim_info, ShortTermRelationshipTrackType.FUN)
        short_fun_rel_gain_amount = 0
        if -100 <= current_fun_short_rel_amount <= -50:
            short_fun_rel_gain_amount += 20
        elif -50 <= current_fun_short_rel_amount <= -15:
            short_fun_rel_gain_amount += 10
        elif 15 <= current_fun_short_rel_amount <= 50:
            short_fun_rel_gain_amount += -10
        elif 50 <= current_fun_short_rel_amount <= 100:
            short_fun_rel_gain_amount += -20
        change_relationship_with_sim(sim_info, target_sim_info,
                                     ShortTermRelationshipTrackType.FUN,
                                     short_fun_rel_gain_amount)
        change_relationship_with_sim(target_sim_info, sim_info,
                                     ShortTermRelationshipTrackType.FUN,
                                     short_fun_rel_gain_amount)
        current_friendship_short_rel_amount = get_relationship_with_sim(
            sim_info, target_sim_info,
            ShortTermRelationshipTrackType.FRIENDSHIP)
        short_friendship_rel_gain_amount = 0
        if -100 <= current_friendship_short_rel_amount <= -50:
            short_friendship_rel_gain_amount += 20
        elif -50 <= current_friendship_short_rel_amount <= -15:
            short_friendship_rel_gain_amount += 10
        elif 15 <= current_friendship_short_rel_amount <= 50:
            short_friendship_rel_gain_amount += 5
        change_relationship_with_sim(sim_info, target_sim_info,
                                     ShortTermRelationshipTrackType.FRIENDSHIP,
                                     short_friendship_rel_gain_amount)
        change_relationship_with_sim(target_sim_info, sim_info,
                                     ShortTermRelationshipTrackType.FRIENDSHIP,
                                     short_friendship_rel_gain_amount)
        current_awkwardness_short_rel_amount = get_relationship_with_sim(
            sim_info, target_sim_info,
            ShortTermRelationshipTrackType.AWKWARDNESS)
        short_awkwardness_rel_gain_amount = 0
        if -100 <= current_awkwardness_short_rel_amount <= -50:
            short_awkwardness_rel_gain_amount += 20
        elif -50 <= current_awkwardness_short_rel_amount <= -15:
            short_awkwardness_rel_gain_amount += 10
        change_relationship_with_sim(
            sim_info, target_sim_info,
            ShortTermRelationshipTrackType.AWKWARDNESS,
            short_friendship_rel_gain_amount)
        change_relationship_with_sim(
            target_sim_info, sim_info,
            ShortTermRelationshipTrackType.AWKWARDNESS,
            short_friendship_rel_gain_amount)
        increase_sim_ww_statistic(sim_info, 'times_sex_got_accepted')
    else:
        change_relationship_with_sim(
            sim_info, target_sim_info,
            ShortTermRelationshipTrackType.AWKWARDNESS, -10)
        change_relationship_with_sim(
            target_sim_info, sim_info,
            ShortTermRelationshipTrackType.AWKWARDNESS, -10)
        current_romance_short_rel_amount = get_relationship_with_sim(
            sim_info, target_sim_info, ShortTermRelationshipTrackType.ROMANCE)
        short_romance_rel_gain_amount = 0
        if -100 <= current_romance_short_rel_amount <= -50:
            short_romance_rel_gain_amount += 20
        elif -50 <= current_romance_short_rel_amount <= -15:
            short_romance_rel_gain_amount += 10
        elif 15 <= current_romance_short_rel_amount <= 50:
            short_romance_rel_gain_amount += -10
        elif 50 <= current_romance_short_rel_amount <= 100:
            short_romance_rel_gain_amount += -20
        change_relationship_with_sim(sim_info, target_sim_info,
                                     ShortTermRelationshipTrackType.ROMANCE,
                                     short_romance_rel_gain_amount)
        change_relationship_with_sim(target_sim_info, sim_info,
                                     ShortTermRelationshipTrackType.ROMANCE,
                                     short_romance_rel_gain_amount)
        current_friendship_short_rel_amount = get_relationship_with_sim(
            sim_info, target_sim_info,
            ShortTermRelationshipTrackType.FRIENDSHIP)
        short_friendship_rel_gain_amount = 0
        if -100 <= current_friendship_short_rel_amount <= -50:
            short_friendship_rel_gain_amount += 20
        elif -50 <= current_friendship_short_rel_amount <= -15:
            short_friendship_rel_gain_amount += 10
        elif 15 <= current_friendship_short_rel_amount <= 50:
            short_friendship_rel_gain_amount += -10
        elif 50 <= current_friendship_short_rel_amount <= 100:
            short_friendship_rel_gain_amount += -20
        change_relationship_with_sim(sim_info, target_sim_info,
                                     ShortTermRelationshipTrackType.FRIENDSHIP,
                                     short_friendship_rel_gain_amount)
        change_relationship_with_sim(target_sim_info, sim_info,
                                     ShortTermRelationshipTrackType.FRIENDSHIP,
                                     short_friendship_rel_gain_amount)
        current_fun_short_rel_amount = get_relationship_with_sim(
            sim_info, target_sim_info, ShortTermRelationshipTrackType.FUN)
        short_fun_rel_gain_amount = 0
        if -50 <= current_fun_short_rel_amount <= -15:
            short_fun_rel_gain_amount += 10
        if 15 <= current_fun_short_rel_amount <= 50:
            short_fun_rel_gain_amount += -10
        elif 50 <= current_fun_short_rel_amount <= 100:
            short_fun_rel_gain_amount += -20
        change_relationship_with_sim(sim_info, target_sim_info,
                                     ShortTermRelationshipTrackType.FUN,
                                     short_fun_rel_gain_amount)
        change_relationship_with_sim(target_sim_info, sim_info,
                                     ShortTermRelationshipTrackType.FUN,
                                     short_fun_rel_gain_amount)
        current_friendship_rel_amount = get_relationship_with_sim(
            sim_info, target_sim_info, RelationshipTrackType.FRIENDSHIP)
        friendship_rel_gain_amount = 0
        if -100 <= current_friendship_rel_amount <= -40:
            friendship_rel_gain_amount += -2
        elif -40 <= current_friendship_rel_amount <= 0:
            friendship_rel_gain_amount += -2
        elif 0 <= current_friendship_rel_amount <= 20:
            friendship_rel_gain_amount += -2
        elif 20 <= current_friendship_rel_amount <= 40:
            friendship_rel_gain_amount += -2
        elif 40 <= current_friendship_rel_amount <= 80:
            friendship_rel_gain_amount += -3
        elif 80 <= current_friendship_rel_amount <= 100:
            friendship_rel_gain_amount += -4
        if has_sim_trait(sim_info, SimTrait.LONER) and sim_ev(
                sim_info).active_sex_handler is None and random.uniform(
                    0, 1) <= 0.2:
            add_sim_buff(sim_info, SimBuff.EMBARRASSED_LONER)
        current_romance_rel_amount = get_relationship_with_sim(
            sim_info, target_sim_info, RelationshipTrackType.ROMANCE)
        romance_rel_gain_amount = 0
        if -100 <= current_romance_rel_amount <= -40:
            romance_rel_gain_amount += -2
        elif -40 <= current_romance_rel_amount <= 0:
            romance_rel_gain_amount += -2
        elif 0 <= current_romance_rel_amount <= 20:
            romance_rel_gain_amount += -2
        elif 20 <= current_romance_rel_amount <= 40:
            romance_rel_gain_amount += -2
        elif 40 <= current_romance_rel_amount <= 80:
            romance_rel_gain_amount += -2
        elif 80 <= current_romance_rel_amount <= 100:
            romance_rel_gain_amount += -2
        change_sim_statistic_value(sim_info, -20,
                                   SimCommodity.BUFF_SOCIAL_FLIRTYCONVERSATION)
        change_sim_statistic_value(target_sim_info, -20,
                                   SimCommodity.BUFF_SOCIAL_FLIRTYCONVERSATION)
        change_sim_statistic_value(sim_info, -20,
                                   SimCommodity.BUFF_SOCIAL_ANGRYCONVERSATION)
        change_sim_statistic_value(target_sim_info, -20,
                                   SimCommodity.BUFF_SOCIAL_ANGRYCONVERSATION)
        if has_sim_trait(sim_info, SimTrait.LONER):
            embarrassing_conversation_commodity_amount = 40
        else:
            embarrassing_conversation_commodity_amount = 20
        if sim_ev(sim_info).active_sex_handler is None:
            change_sim_statistic_value(
                sim_info, embarrassing_conversation_commodity_amount,
                SimCommodity.BUFF_SOCIAL_EMBARRASSINGCONVERSATION)
        change_sim_statistic_value(sim_info, -20,
                                   SimCommodity.BUFF_SOCIAL_BORINGCONVERSATION)
        change_sim_statistic_value(target_sim_info, -20,
                                   SimCommodity.BUFF_SOCIAL_BORINGCONVERSATION)
        change_sim_statistic_value(sim_info, -20,
                                   SimCommodity.BUFF_SOCIAL_HAPPYCONVERSATION)
        change_sim_statistic_value(target_sim_info, -20,
                                   SimCommodity.BUFF_SOCIAL_HAPPYCONVERSATION)
        change_sim_statistic_value(
            sim_info, -20, SimCommodity.BUFF_SOCIAL_PLAYFULCONVERSATION)
        change_sim_statistic_value(
            target_sim_info, -20, SimCommodity.BUFF_SOCIAL_PLAYFULCONVERSATION)
        add_relationsip_bit_with_sim(
            sim_info, target_sim_info,
            SimRelationshipBit.SHORTTERM_RECENTNEGATIVESOCIAL)
        if display_message is True and (
                TurboSimUtil.Sim.is_player(sim_info)
                or TurboSimUtil.Sim.is_player(target_sim_info)):
            display_notification(text=215847180,
                                 text_tokens=(target_sim_info, sim_info),
                                 title=0,
                                 secondary_icon=target_sim_info)
        increase_sim_ww_statistic(sim_info, 'times_sex_got_rejected')