def update_naturism_buffs(sim_info, category_and_index):
    if TurboSimUtil.Age.is_younger_than(sim_info, TurboSimUtil.Age.CHILD):
        return
    has_naturist_buff = has_sim_buff(
        sim_info, SimBuff.WW_NATURISM_SKILL_LEVEL_2) or (
            has_sim_buff(sim_info, SimBuff.WW_NATURISM_SKILL_LEVEL_3) or
            (has_sim_buff(sim_info, SimBuff.WW_NATURISM_SKILL_LEVEL_4)
             or has_sim_buff(sim_info, SimBuff.WW_NATURISM_SKILL_LEVEL_5)))
    sim_outfit_level = get_sim_outfit_level(
        sim_info, outfit_category_and_index=category_and_index)
    is_sim_allowed_for_buff = (sim_outfit_level == OutfitLevel.NUDE
                               or sim_outfit_level == OutfitLevel.BATHING
                               ) and is_sim_naturist(sim_info)
    if has_naturist_buff is False and is_sim_allowed_for_buff is True:
        nudity_skill_level = get_sim_nudity_skill_level(sim_info)
        naturism_buff = None
        if nudity_skill_level <= 1:
            naturism_buff = SimBuff.WW_NATURISM_SKILL_LEVEL_1
        elif nudity_skill_level == 2:
            naturism_buff = SimBuff.WW_NATURISM_SKILL_LEVEL_2
        elif nudity_skill_level == 3:
            naturism_buff = SimBuff.WW_NATURISM_SKILL_LEVEL_3
        elif nudity_skill_level == 4:
            naturism_buff = SimBuff.WW_NATURISM_SKILL_LEVEL_4
        elif nudity_skill_level >= 5:
            naturism_buff = SimBuff.WW_NATURISM_SKILL_LEVEL_5
        if naturism_buff is not None:
            add_sim_buff(sim_info, naturism_buff)
    if has_naturist_buff is True and is_sim_allowed_for_buff is False:
        remove_sim_buff(sim_info, SimBuff.WW_NATURISM_SKILL_LEVEL_2)
        remove_sim_buff(sim_info, SimBuff.WW_NATURISM_SKILL_LEVEL_3)
        remove_sim_buff(sim_info, SimBuff.WW_NATURISM_SKILL_LEVEL_4)
        remove_sim_buff(sim_info, SimBuff.WW_NATURISM_SKILL_LEVEL_5)
Esempio n. 2
0
def _update_sim_condom_status_buff(sim_identifier):
    sim_info = TurboManagerUtil.Sim.get_sim_info(sim_identifier)
    if sim_ev(sim_info).has_condom_on is True:
        if not has_sim_buff(sim_info, SimBuff.WW_PREGNANCY_IS_WEARING_CONDOM):
            add_sim_buff(sim_info, SimBuff.WW_PREGNANCY_IS_WEARING_CONDOM)
    elif has_sim_buff(sim_info, SimBuff.WW_PREGNANCY_IS_WEARING_CONDOM):
        remove_sim_buff(sim_info, SimBuff.WW_PREGNANCY_IS_WEARING_CONDOM)
Esempio n. 3
0
def update_sim_birth_control_status_buff(sim_identifier):
    sim_info = TurboManagerUtil.Sim.get_sim_info(sim_identifier)
    if sim_ev(
            sim_info
    ).day_used_birth_control_pills == TurboWorldUtil.Time.get_absolute_days():
        if not has_sim_buff(sim_info,
                            SimBuff.WW_PREGNANCY_IS_ON_BIRTH_CONTROL):
            add_sim_buff(sim_info, SimBuff.WW_PREGNANCY_IS_ON_BIRTH_CONTROL)
    elif has_sim_buff(sim_info, SimBuff.WW_PREGNANCY_IS_ON_BIRTH_CONTROL):
        remove_sim_buff(sim_info, SimBuff.WW_PREGNANCY_IS_ON_BIRTH_CONTROL)
def _update_sim_desire_effects(sim_identifier):
    sim_info = TurboManagerUtil.Sim.get_sim_info(sim_identifier)
    master_desire_level = get_sim_statistic_value(
        sim_info, SimCommodity.WW_SEX_MASTER_DESIRE)
    if master_desire_level >= 85:
        if not has_sim_buff(sim_info, SimBuff.WW_DESIRE_NEGATIVE):
            remove_sim_buff(sim_info, SimBuff.WW_DESIRE_POSITIVE)
            add_sim_buff(sim_info,
                         SimBuff.WW_DESIRE_NEGATIVE,
                         reason=2404119453)
    elif not (master_desire_level >= 50
              and has_sim_buff(sim_info, SimBuff.WW_DESIRE_POSITIVE)):
        add_sim_buff(sim_info, SimBuff.WW_DESIRE_POSITIVE, reason=2404119453)
Esempio n. 5
0
def has_sim_permission_for_nudity(sim_identifier,
                                  nudity_setting_test=False,
                                  extra_skill_level=0,
                                  **kwargs):
    sim = TurboManagerUtil.Sim.get_sim_instance(sim_identifier)
    if TurboSimUtil.Age.is_younger_than(sim, TurboSimUtil.Age.CHILD):
        return (False, (NudityPermissionDenied.IS_UNDERAGED, ))
    if CNSimUtils.can_have_sex(sim):
        return (False, (NudityPermissionDenied.IS_UNDERAGED, ))
    if nudity_setting_test is True and not get_nudity_setting(
            NuditySetting.NUDITY_SWITCH_STATE, variable_type=bool):
        return (True, tuple())
    if has_current_lot_trait(
            LotTrait.WW_LOTTRAIT_NUDIST
    ) and TurboWorldUtil.Lot.is_position_on_active_lot(
            TurboSimUtil.Location.get_position(sim)):
        return (True, tuple())
    if has_sim_buff(sim, SimBuff.WW_NUDITY_TEMPORARY_BRAVE):
        return (True, tuple())
    nudity_skill_level = min(
        5,
        get_sim_nudity_skill_level(sim) + extra_skill_level)
    if is_sim_exhibitionist(sim):
        score = nudity_skill_level * 120
    else:
        score = nudity_skill_level * 100
    denied_permissions = set()
    for permission_check in (_home_test, _outside_test, _sims_test):
        test_result = permission_check(sim, score, **kwargs)
        if test_result and test_result[0] != 0:
            score += test_result[0]
            denied_permissions.add(test_result[1])
            if score <= 0:
                return (False, denied_permissions)
    return (True, denied_permissions)
Esempio n. 6
0
def get_sim_sex_state_snapshot(sim_identifier):
    sim_info = TurboManagerUtil.Sim.get_sim_info(sim_identifier)
    return {
        'mood':
        TurboResourceUtil.Resource.get_guid64(
            TurboSimUtil.Mood.get_mood(sim_info)),
        'motive_fun':
        get_sim_motive_value(sim_info, SimMotive.FUN),
        'motive_social':
        get_sim_motive_value(sim_info, SimMotive.SOCIAL),
        'motive_hygiene':
        get_sim_motive_value(sim_info, SimMotive.HYGIENE),
        'motive_bladder':
        get_sim_motive_value(sim_info, SimMotive.BLADDER),
        'motive_energy':
        get_sim_motive_value(sim_info, SimMotive.ENERGY),
        'motive_hunger':
        get_sim_motive_value(sim_info, SimMotive.HUNGER),
        'motive_vampire_power':
        get_sim_motive_value(sim_info, SimMotive.VAMPIRE_POWER),
        'motive_vampire_thirst':
        get_sim_motive_value(sim_info, SimMotive.VAMPIRE_THIRST),
        'motive_plantsim_water':
        get_sim_motive_value(sim_info, SimMotive.PLANTSIM_WATER),
        'has_positive_desire_buff':
        has_sim_buff(sim_info, SimBuff.WW_DESIRE_POSITIVE)
    }
Esempio n. 7
0
def update_cum_buffs(sim_info, outfit_category_and_index=None):
    if TurboSimUtil.Age.is_younger_than(sim_info, TurboSimUtil.Age.CHILD):
        return
    has_positive_buff = has_sim_buff(sim_info, SimBuff.WW_CUM_ON_BODY_POSITIVE)
    has_negative_buff = has_sim_buff(sim_info, SimBuff.WW_CUM_ON_BODY_NEGATIVE)
    if has_sim_cas_part_id(sim_info, (CUM_FACE_LAYER, CUM_CHEST_LAYER, CUM_BACK_LAYER, CUM_VAGINA_LAYER, CUM_BUTT_LAYER, CUM_FEET_LAYER), outfit_category_and_index=outfit_category_and_index):
        if has_positive_buff is False and has_negative_buff is False:
            if has_sim_trait(sim_info, SimTrait.WW_CUMSLUT) or has_sim_trait(sim_info, SimTrait.ROMANTIC):
                add_sim_buff(sim_info, SimBuff.WW_CUM_ON_BODY_POSITIVE)
            elif has_sim_trait(sim_info, SimTrait.HATESCHILDREN):
                return
            else:
                add_sim_buff(sim_info, SimBuff.WW_CUM_ON_BODY_NEGATIVE)
        return
    if has_positive_buff is True:
        remove_sim_buff(sim_info, SimBuff.WW_CUM_ON_BODY_POSITIVE)
    if has_negative_buff is True:
        remove_sim_buff(sim_info, SimBuff.WW_CUM_ON_BODY_NEGATIVE)
Esempio n. 8
0
def apply_period_related_buffs(sim_identifier):
    sim_info = TurboManagerUtil.Sim.get_sim_info(sim_identifier)
    sim_id = TurboManagerUtil.Sim.get_sim_id(sim_info)
    menstrual_cycle_days = get_sim_menstrual_cycle_days(sim_info)
    absolute_days = TurboWorldUtil.Time.get_absolute_days(
    ) + ABSOLUTE_DAYS_OFFSET
    cycle_day = absolute_days % menstrual_cycle_days + 1
    cycle_number = max(1, int(absolute_days / menstrual_cycle_days))
    random_inst = random.Random(sim_id / cycle_number)
    (_, _, cramps_duration, period_duration) = get_cycle_durations()
    is_on_birth_control = sim_ev(
        sim_info
    ).day_used_birth_control_pills == TurboWorldUtil.Time.get_absolute_days()
    if is_on_birth_control is True:
        period_duration = 0
    else:
        period_duration = random_inst.randint(*period_duration)
    if period_duration > 0 and cycle_day <= period_duration:
        if has_sim_trait(sim_info, SimTrait.OCCULTVAMPIRE):
            period_buff = SimBuff.WW_PREGNANCY_PERIOD_VAMPIRE_UNCOMFORTABLE
        else:
            period_buff = random_inst.choice(
                (SimBuff.WW_PREGNANCY_PERIOD_FINE,
                 SimBuff.WW_PREGNANCY_PERIOD_FLIRTY,
                 SimBuff.WW_PREGNANCY_PERIOD_DAZED,
                 SimBuff.WW_PREGNANCY_PERIOD_SAD,
                 SimBuff.WW_PREGNANCY_PERIOD_TENSE,
                 SimBuff.WW_PREGNANCY_PERIOD_UNCOMFORTABLE))
        add_sim_buff(sim_info, period_buff)
    is_using_weed = is_basemental_drugs_installed() and (
        has_sim_buff(sim_info, SimBuff.BASEMENTAL_WEED_HIGH_ON_AK47) or
        (has_sim_buff(sim_info, SimBuff.BASEMENTAL_WEED_HIGH_ON_OG_KUSH) or
         has_sim_buff(sim_info, SimBuff.BASEMENTAL_WEED_HIGH_ON_PURPLE_HAZE)))
    if is_on_birth_control is True or is_using_weed is True:
        cramps_duration = 0
    else:
        cramps_duration = random_inst.randint(
            *cramps_duration) if random_inst.uniform(0, 1) <= 0.5 else 0
    if cramps_duration > 0 and cycle_day > menstrual_cycle_days - cramps_duration:
        add_sim_buff(sim_info,
                     random_inst.choice((SimBuff.WW_PREGNANCY_CRAMPS_LOW,
                                         SimBuff.WW_PREGNANCY_CRAMPS_MEDIUM,
                                         SimBuff.WW_PREGNANCY_CRAMPS_HIGH)),
                     reason=2061236478)
Esempio n. 9
0
def is_sim_available(sim_identifier):
    if has_sim_mood(sim_identifier, SimMood.SLEEPING):
        return False
    if has_sim_buff(sim_identifier, SimBuff.SIM_ISDYING):
        return False
    sim = TurboManagerUtil.Sim.get_sim_instance(sim_identifier)
    if not TurboSimUtil.Location.is_visible(sim):
        return False
    if has_sim_situation(
            sim, SimSituation.LEAVE) or TurboSimUtil.Spawner.is_leaving(sim):
        return False
    return True
Esempio n. 10
0
def _flash_sim_result(sim, target):
    sim_ev(sim).is_flashing = True
    increase_sim_nudity_skill(sim,
                              get_nudity_skill_points_modifier(
                                  NuditySkillIncreaseReason.FLASHING_BODY),
                              extra_fatigue=5.0)
    is_prefered_gender = TurboSimUtil.Gender.get_gender(
        sim) in get_sim_preferenced_genders(target)
    if is_prefered_gender is True:
        apply_nudity_skill_influence(target, 0.05, overall_limit=6.5)
        change_sim_desire_level(target, 10)
        change_sim_desire_level(sim, 4.5)
    if not has_sim_buff(sim, SimBuff.WW_NUDITY_HAS_FLASHED):
        add_sim_buff(sim, SimBuff.WW_NUDITY_HAS_FLASHED)
def _update_nudity_buffs(sim_info, category_and_index):
    if TurboSimUtil.Age.is_younger_than(sim_info, TurboSimUtil.Age.CHILD):
        return
    if not is_sim_naturist(
            sim_info) or get_sim_nudity_skill_level(sim_info) < 2:
        return
    has_nudity_buff = has_sim_buff(sim_info, SimBuff.WW_NUDITY_IS_NAKED_HIGH)
    sim_outfit_level = get_sim_outfit_level(
        sim_info, outfit_category_and_index=category_and_index)
    is_sim_nude = sim_outfit_level == OutfitLevel.NUDE or sim_outfit_level == OutfitLevel.BATHING
    if has_nudity_buff is False and is_sim_nude is True:
        add_sim_buff(sim_info, SimBuff.WW_NUDITY_IS_NAKED_HIGH)
    if has_nudity_buff is True and is_sim_nude is False:
        remove_sim_buff(sim_info, SimBuff.WW_NUDITY_IS_NAKED_HIGH)
def _get_sim_appearance_data_for_pregnancy(sim_identifier):
    sim_info = TurboManagerUtil.Sim.get_sim_info(sim_identifier)
    if has_sim_buff(sim_info, SimBuff.PREGNANCY_INLABOR) or has_sim_buff(sim_info, SimBuff.PREGNANCY_INLABOR_MALE):
        if TurboSimUtil.Gender.is_female(sim_info):
            return (16391756994022883177, 1.0)
        return (5705220627947342604, 1.0)
    elif has_sim_buff(sim_info, SimBuff.PREGNANCY_TRIMESTER3) or has_sim_buff(sim_info, SimBuff.PREGNANCY_TRIMESTER3_MALE) or has_sim_buff(sim_info, SimBuff.PREGNANCY_TRIMESTER3_HATESCHILDREN):
        if TurboSimUtil.Gender.is_female(sim_info):
            return (16391756994022883177, 0.95)
        return (5705220627947342604, 0.95)
    elif has_sim_buff(sim_info, SimBuff.PREGNANCY_TRIMESTER2) or has_sim_buff(sim_info, SimBuff.PREGNANCY_TRIMESTER2_MALE) or has_sim_buff(sim_info, SimBuff.PREGNANCY_TRIMESTER2_HATESCHILDREN):
        if TurboSimUtil.Gender.is_female(sim_info):
            return (16391756994022883177, 0.75)
        return (5705220627947342604, 0.75)
    elif has_sim_buff(sim_info, SimBuff.PREGNANCY_TRIMESTER1) or has_sim_buff(sim_info, SimBuff.PREGNANCY_TRIMESTER1_MALE) or has_sim_buff(sim_info, SimBuff.PREGNANCY_TRIMESTER1_HATESCHILDREN):
        if TurboSimUtil.Gender.is_female(sim_info):
            return (16391756994022883177, 0.5)
        return (5705220627947342604, 0.5)
    if TurboSimUtil.Gender.is_female(sim_info):
        return (16391756994022883177, 0.0)
    return (5705220627947342604, 0.0)
def is_sim_on_basemental_drugs(sim_identifier,
                               skip_weed=False,
                               skip_cocaine=False,
                               skip_mdma=False,
                               skip_amphetamine=False):
    sim_info = TurboManagerUtil.Sim.get_sim_info(sim_identifier)
    if skip_weed is False:
        return has_sim_buff(
            sim_info, SimBuff.BASEMENTAL_WEED_HIGH_ON_PURPLE_HAZE) or (
                has_sim_buff(sim_info, SimBuff.BASEMENTAL_WEED_HIGH_ON_OG_KUSH)
                or
                (has_sim_buff(sim_info, SimBuff.BASEMENTAL_WEED_HIGH_ON_AK47)
                 or has_sim_buff(sim_info,
                                 SimBuff.BASEMENTAL_WEED_SUPER_HIGH_ON_WEED)))
    if skip_cocaine is False:
        return has_sim_buff(
            sim_info, SimBuff.BASEMENTAL_COCAINE_VERY_HIGH_ON_MEDIUM_QUALITY
        ) or (has_sim_buff(
            sim_info, SimBuff.BASEMENTAL_COCAINE_VERY_HIGH_ON_HIGH_QUALITY) or
              (has_sim_buff(sim_info,
                            SimBuff.BASEMENTAL_COCAINE_HIGH_ON_MEDIUM_QUALITY)
               or has_sim_buff(
                   sim_info, SimBuff.BASEMENTAL_COCAINE_HIGH_ON_HIGH_QUALITY)))
    if skip_mdma is False:
        return has_sim_buff(
            sim_info, SimBuff.BASEMENTAL_MDMA_HIGH_ON_MEDIUM_QUALITY
        ) or (has_sim_buff(sim_info,
                           SimBuff.BASEMENTAL_MDMA_HIGH_ON_GOOD_1_QUALITY) or
              (has_sim_buff(sim_info,
                            SimBuff.BASEMENTAL_MDMA_HIGH_ON_GOOD_2_QUALITY) or
               (has_sim_buff(sim_info,
                             SimBuff.BASEMENTAL_MDMA_HIGH_ON_HIGH_QUALITY)
                or has_sim_buff(
                    sim_info, SimBuff.BASEMENTAL_MDMA_HIGH_ON_SUPER_QUALITY))))
    if skip_amphetamine is False:
        return has_sim_buff(
            sim_info, SimBuff.BASEMENTAL_AMPHETAMINE_HIGH_ON_HIGH_QUALITY
        ) or (has_sim_buff(
            sim_info, SimBuff.BASEMENTAL_AMPHETAMINE_HIGH_ON_POOR_QUALITY) or
              (has_sim_buff(
                  sim_info,
                  SimBuff.BASEMENTAL_AMPHETAMINE_VERY_HIGH_ON_HIGH_QUALITY)
               or has_sim_buff(
                   sim_info,
                   SimBuff.BASEMENTAL_AMPHETAMINE_VERY_HIGH_ON_POOR_QUALITY)))
    return False
def _jealousy_from_sex_reaction(sim, sex_handler):
    if not get_relationship_setting(RelationshipSetting.JEALOUSY_STATE,
                                    variable_type=bool):
        return False
    if sex_handler.get_actors_amount() <= 1:
        return False
    if TurboSimUtil.Age.is_younger_than(sim, TurboSimUtil.Age.CHILD):
        return False
    if has_sim_trait(sim, SimTrait.WW_POLYAMOROUS) or has_sim_trait(
            sim, SimTrait.WW_CUCKOLD):
        return False
    (found_lovers,
     found_non_lovers) = _get_jealousy_sims_from_sex_handler(sim, sex_handler)
    if found_lovers and found_non_lovers:
        for target in found_non_lovers:
            relationship_amount_modifier = -3 if not has_sim_trait(
                sim, SimTrait.JEALOUS) else -6
            change_relationship_with_sim(sim, target,
                                         RelationshipTrackType.FRIENDSHIP,
                                         relationship_amount_modifier)
            if get_relationship_with_sim(sim, target,
                                         RelationshipTrackType.ROMANCE) > 0:
                change_relationship_with_sim(sim, target,
                                             RelationshipTrackType.ROMANCE,
                                             relationship_amount_modifier)
        for target in found_lovers:
            jealousy_success = False
            for jealousy_interaction in JEALOUSY_WOOHOO_REACTION_LIST:
                result = TurboSimUtil.Interaction.push_affordance(
                    sim,
                    jealousy_interaction,
                    target=target,
                    interaction_context=TurboInteractionUtil.
                    InteractionContext.SOURCE_SCRIPT,
                    insert_strategy=TurboInteractionUtil.QueueInsertStrategy.
                    NEXT,
                    must_run_next=True,
                    priority=TurboInteractionUtil.Priority.High,
                    run_priority=TurboInteractionUtil.Priority.High)
                if result:
                    jealousy_success = True
                    break
            if has_sim_buff(sim, SimBuff.JEALOUSY_CHEATER):
                current_romance_rel_amount = get_relationship_with_sim(
                    sim, target, RelationshipTrackType.ROMANCE)
                if current_romance_rel_amount >= 30 and has_relationship_bit_with_sim(
                        sim, target, SimRelationshipBit.ROMANTIC_ENGAGED) or (
                            has_relationship_bit_with_sim(
                                sim, target,
                                SimRelationshipBit.ROMANTIC_MARRIED)
                            or has_relationship_bit_with_sim(
                                sim, target,
                                SimRelationshipBit.ROMANTIC_GETTINGMARRIED)
                        ) or has_relationship_bit_with_sim(
                            sim, target,
                            SimRelationshipBit.ROMANTIC_SIGNIFICANT_OTHER):
                    add_sim_buff(sim,
                                 SimBuff.JEALOUSY_HIDDEN_WITNESSEDCHEATING)
            if jealousy_success is True:
                sim_ev(sim).sex_reaction_cooldown = 5
                return True
    return False
Esempio n. 15
0
def is_sim_in_towel_outfit(sim_identifier):
    return has_sim_buff(sim_identifier, SimBuff.ISWEARINGTOWEL)
def get_relationship_score(sim_identifier,
                           target_sim_identifier,
                           skip_always_accept=False):
    sim_info = TurboManagerUtil.Sim.get_sim_info(sim_identifier)
    target_sim_info = TurboManagerUtil.Sim.get_sim_info(target_sim_identifier)
    is_npc_exclusive = TurboSimUtil.Sim.is_npc(
        sim_info) and TurboSimUtil.Sim.is_npc(target_sim_info)
    if get_sex_setting(
            SexSetting.ALWAYS_ACCEPT_STATE, variable_type=bool
    ) and is_npc_exclusive is False and skip_always_accept is False:
        return 1000
    if has_sim_trait(sim_info, SimTrait.WW_SEXUALLY_ABSTINENT):
        return -1000
    if has_sim_trait(sim_info, SimTrait.BASEMENTAL_IS_A_DRUG_DEALER) and (
            has_sim_buff(target_sim_info,
                         SimBuff.BASEMENTAL_COCAINE_SEX_PAYMENT_HIDDEN)
            or has_sim_buff(target_sim_info,
                            SimBuff.BASEMENTAL_AMPHETAMINE_SEX_PAYMENT_HIDDEN)
            or has_sim_buff(target_sim_info,
                            SimBuff.BASEMENTAL_MDMA_SEX_PAYMENT_HIDDEN)):
        return 1000
    if has_sim_trait(
            sim_info,
            SimTrait.BASEMENTAL_IS_A_COCAINE_DRUG_DEALER) and has_sim_buff(
                target_sim_info,
                SimBuff.BASEMENTAL_COCAINE_SEX_PAYMENT_HIDDEN):
        return 1000
    if has_sim_trait(
            sim_info,
            SimTrait.BASEMENTAL_IS_A_AMPHETAMINE_DRUG_DEALER) and has_sim_buff(
                target_sim_info,
                SimBuff.BASEMENTAL_AMPHETAMINE_SEX_PAYMENT_HIDDEN):
        return 1000
    if has_relationship_bit_with_sim(
            sim_info, target_sim_info,
            SimRelationshipBit.BASEMENTAL_DEALER_COCAINE_COMPANION
    ) and has_relationship_bit_with_sim(
            target_sim_info, sim_info,
            SimRelationshipBit.BASEMENTAL_DEALER_COCAINE_COMPANION):
        return 1000
    score = 0
    if is_npc_exclusive:
        pre_sex_handler = sim_ev(sim_info).active_pre_sex_handler or sim_ev(
            target_sim_info).active_pre_sex_handler
        if pre_sex_handler is not None and (pre_sex_handler.is_manual_sex() or
                                            pre_sex_handler.is_autonomy_sex()):
            return 1000
        if get_sex_setting(SexSetting.AUTONOMY_LEVEL,
                           variable_type=int) == SexAutonomyLevelSetting.LOW:
            score += 3
        elif get_sex_setting(
                SexSetting.AUTONOMY_LEVEL,
                variable_type=int) == SexAutonomyLevelSetting.NORMAL:
            score += 6
        elif get_sex_setting(
                SexSetting.AUTONOMY_LEVEL,
                variable_type=int) == SexAutonomyLevelSetting.HIGH:
            score += 20
        age_limit = get_age_limits_for_sex((sim_info, ))
        if TurboSimUtil.Age.is_younger_than(
                target_sim_info,
                age_limit[0]) or TurboSimUtil.Age.is_older_than(
                    target_sim_info, age_limit[1]):
            return -1000
        preferred_genders = get_sim_preferenced_genders(sim_info)
        if TurboSimUtil.Gender.get_gender(
                target_sim_info) in preferred_genders:
            score += 5
        else:
            score += -5
    if is_true_family_relationship(sim_info, target_sim_info):
        score += -50
    current_charisma_skill_level = get_sim_skill_level(
        sim_info, SimSkill.ADULTMAJOR_CHARISMA)
    if 1 <= current_charisma_skill_level <= 2:
        score += 2
    if 3 <= current_charisma_skill_level <= 4:
        score += 3
    if 5 <= current_charisma_skill_level <= 6:
        score += 6
    if 7 <= current_charisma_skill_level <= 8:
        score += 8
    if 9 <= current_charisma_skill_level <= 10:
        score += 12
    if has_sim_trait(sim_info, SimTrait.ALLURING):
        score += 4
    if get_relationship_setting(RelationshipSetting.JEALOUSY_STATE,
                                variable_type=bool) and not has_sim_trait(
                                    sim_info, SimTrait.WW_POLYAMOROUS):
        current_significant_sims = get_sim_relationship_sims(sim_info)
        if current_significant_sims:
            if TurboManagerUtil.Sim.get_sim_id(
                    target_sim_info) in current_significant_sims:
                score += 6 if not has_sim_trait(
                    sim_info, SimTrait.COMMITMENTISSUES) else 3
            else:
                score += -10 if not has_sim_trait(
                    sim_info, SimTrait.COMMITMENTISSUES) else -5
    if has_relationship_bit_with_sim(
            sim_info, target_sim_info,
            SimRelationshipBit.SOCIALCONTEXT_ROMANCE_STEAMY):
        score += 12
    if has_relationship_bit_with_sim(
            sim_info, target_sim_info,
            SimRelationshipBit.SOCIALCONTEXT_ROMANCE_AMOROUS):
        score += 7
    if has_relationship_bit_with_sim(
            sim_info, target_sim_info,
            SimRelationshipBit.FRIENDSHIP_BFF_BROMANTICPARTNER):
        score += 6
    if has_relationship_bit_with_sim(sim_info, target_sim_info,
                                     SimRelationshipBit.FRIENDSHIP_BFF):
        score += 5
    if has_relationship_bit_with_sim(sim_info, target_sim_info,
                                     SimRelationshipBit.FRIENDSHIP_BFF_EVIL):
        score += 4
    if has_relationship_bit_with_sim(
            sim_info, target_sim_info,
            SimRelationshipBit.SOCIALCONTEXT_ROMANCE_SUGGESTIVE):
        score += 5
    if has_relationship_bit_with_sim(
            sim_info, target_sim_info,
            SimRelationshipBit.SOCIALCONTEXT_FRIENDSHIP_FRIENDLY):
        score += 4
    if has_relationship_bit_with_sim(
            sim_info, target_sim_info,
            SimRelationshipBit.SOCIALCONTEXT_FUN_FUNNY):
        score += 4
    if has_relationship_bit_with_sim(
            sim_info, target_sim_info,
            SimRelationshipBit.SOCIALCONTEXT_FUN_HILARIOUS):
        score += 4
    if has_relationship_bit_with_sim(
            sim_info, target_sim_info,
            SimRelationshipBit.SOCIALCONTEXT_RETAIL_MILDLYINTERESTED):
        score += 1
    if has_relationship_bit_with_sim(
            sim_info, target_sim_info,
            SimRelationshipBit.SOCIALCONTEXT_RETAIL_UNINTERESTED):
        score += 1
    if has_relationship_bit_with_sim(
            sim_info, target_sim_info,
            SimRelationshipBit.SOCIALCONTEXT_RETAIL_VERYINTERESTED):
        score += 1
    if has_relationship_bit_with_sim(
            sim_info, target_sim_info,
            SimRelationshipBit.SOCIALCONTEXT_FRIENDSHIP_DISTASTEFUL):
        score += -5
    if has_relationship_bit_with_sim(
            sim_info, target_sim_info,
            SimRelationshipBit.SOCIALCONTEXT_FUN_BORING):
        score += -5
    if has_relationship_bit_with_sim(
            sim_info, target_sim_info,
            SimRelationshipBit.SOCIALCONTEXT_FUN_TEDIOUS):
        score += -8
    if has_relationship_bit_with_sim(
            sim_info, target_sim_info,
            SimRelationshipBit.SOCIALCONTEXT_FUN_INSUFFERABLYTEDIOUS):
        score += -15
    if has_relationship_bit_with_sim(
            sim_info, target_sim_info,
            SimRelationshipBit.SOCIALCONTEXT_FRIENDSHIP_OFFENSIVE):
        score += -20
    if has_relationship_bit_with_sim(
            sim_info, target_sim_info,
            SimRelationshipBit.SOCIALCONTEXT_AWKWARDNESS_AWKWARD):
        score += -23
    if has_relationship_bit_with_sim(
            sim_info, target_sim_info,
            SimRelationshipBit.SOCIALCONTEXT_AWKWARDNESS_VERYAWKWARD):
        score += -23
    if has_relationship_bit_with_sim(
            sim_info, target_sim_info,
            SimRelationshipBit.SOCIALCONTEXT_FRIENDSHIP_ABHORRENT):
        score += -25
    current_desire_level = get_sim_desire_level(sim_info)
    if current_desire_level >= 85:
        score += 10
    elif current_desire_level >= 50:
        score += 7
    current_friendship_rel_amount = get_relationship_with_sim(
        sim_info, target_sim_info, RelationshipTrackType.FRIENDSHIP)
    if -100 <= current_friendship_rel_amount <= -70:
        score += -10
    if -70 <= current_friendship_rel_amount <= -30:
        score += -5
    if -30 <= current_friendship_rel_amount <= -15:
        score += -2
    if -15 <= current_friendship_rel_amount <= 25:
        score += 4
    if 25 <= current_friendship_rel_amount <= 60:
        score += 8
    if 60 <= current_friendship_rel_amount <= 100:
        score += 10
    current_romantic_rel_amount = get_relationship_with_sim(
        sim_info, target_sim_info, RelationshipTrackType.ROMANCE)
    if -100 <= current_romantic_rel_amount <= -50:
        score += -6
    if -50 <= current_romantic_rel_amount <= 0:
        score += -3
    if 25 <= current_romantic_rel_amount <= 50:
        score += 10
    if 50 <= current_romantic_rel_amount <= 100:
        score += 25
    if has_sim_mood(sim_info, SimMood.FLIRTY):
        score += 7
    if has_sim_mood(sim_info, SimMood.DAZED):
        score += 7
    if has_sim_mood(sim_info, SimMood.CONFIDENT):
        score += 4
    if has_sim_mood(sim_info, SimMood.HAPPY):
        score += 4
    if has_sim_mood(sim_info, SimMood.PLAYFUL):
        score += 3
    if has_sim_mood(sim_info, SimMood.ENERGIZED):
        score += 2
    if has_sim_mood(sim_info, SimMood.FINE):
        score += 2
    if has_sim_mood(sim_info, SimMood.INSPIRED):
        score += 2
    if has_sim_mood(sim_info, SimMood.FOCUSED):
        score += 2
    if has_sim_mood(sim_info, SimMood.INSPIRED):
        score += 2
    if has_sim_mood(sim_info, SimMood.ANGRY):
        score += -3
    if has_sim_mood(sim_info, SimMood.STRESSED):
        score += -5
    if has_sim_mood(sim_info, SimMood.UNCOMFORTABLE):
        score += -5
    if has_sim_mood(sim_info, SimMood.BORED):
        score += -6
    if has_sim_mood(sim_info, SimMood.SAD):
        score += -10
    if has_sim_mood(sim_info, SimMood.EMBARRASSED):
        score += -13
    if has_sim_trait(
            sim_info,
            SimTrait.WW_SEXUALLY_ALLURING) and has_relationship_bit_with_sim(
                sim_info, target_sim_info, SimRelationshipBit.HAS_MET):
        score += 50
    if has_sim_trait(
            sim_info,
            SimTrait.EVIL) and get_sim_relationship_sims(target_sim_info):
        score += 4
    if has_sim_trait(sim_info, SimTrait.LONER):
        score += 3
    if has_sim_trait(sim_info, SimTrait.BRO) and has_sim_trait(
            target_sim_info, SimTrait.BRO):
        score += 1
    if has_sim_buff(sim_info, SimBuff.MOODHIDDEN_PASSIONATE):
        score += 10
    if has_sim_buff(sim_info, SimBuff.CLUBS_PERKS_SOCIALBONUS_ROMANTIC):
        score += 10
    if has_sim_buff(sim_info, SimBuff.MOODHIDDEN_FEARLESS):
        score += 5
    if has_sim_buff(sim_info, SimBuff.MOODHIDDEN_ELATED):
        score += 5
    if has_sim_buff(sim_info, SimBuff.FESTIVAL_BLOSSOM_TEAGLOW_SAKURA):
        score += 5
    if has_sim_buff(
            sim_info, SimBuff.BASEMENTAL_MDMA_HIGH_ON_SUPER_QUALITY
    ) or (has_sim_buff(sim_info, SimBuff.BASEMENTAL_MDMA_HIGH_ON_HIGH_QUALITY)
          or has_sim_buff(
              sim_info,
              SimBuff.BASEMENTAL_MDMA_HIGH_ON_GOOD_1_QUALITY)) or has_sim_buff(
                  sim_info, SimBuff.BASEMENTAL_MDMA_HIGH_ON_GOOD_2_QUALITY):
        score += 3
    if has_sim_buff(
            sim_info,
            SimBuff.BASEMENTAL_COCAINE_HIGH_ON_HIGH_QUALITY) or has_sim_buff(
                sim_info, SimBuff.BASEMENTAL_COCAINE_HIGH_ON_MEDIUM_QUALITY):
        score += 3
    if has_sim_buff(
            sim_info,
            SimBuff.BASEMENTAL_MDMA_HIGH_ON_MEDIUM_QUALITY) or has_sim_buff(
                sim_info, SimBuff.BASEMENTAL_MDMA_HIGH_ON_LOW_QUALITY):
        score += 2
    if has_sim_buff(
            sim_info, SimBuff.BASEMENTAL_COCAINE_VERY_HIGH_ON_HIGH_QUALITY
    ) or has_sim_buff(sim_info,
                      SimBuff.BASEMENTAL_COCAINE_VERY_HIGH_ON_MEDIUM_QUALITY):
        score += 3
    if has_sim_buff(sim_info, SimBuff.BASEMENTAL_ALCOHOL_TIPSY):
        score += 1
    elif has_sim_buff(sim_info, SimBuff.BASEMENTAL_ALCOHOL_DRUNK):
        score += 2
    elif has_sim_buff(sim_info, SimBuff.BASEMENTAL_ALCOHOL_WASTED):
        score += 3
    if has_sim_buff(sim_info, SimBuff.MOODHIDDEN_HUMILIATED) or has_sim_buff(
            sim_info, SimBuff.MOODHIDDEN_MORTIFIED):
        score += 1
    if has_sim_buff(sim_info, SimBuff.MOODHIDDEN_PUMPED):
        score += 1
    if has_sim_buff(sim_info, SimBuff.MOODHIDDEN_INTHEZONE):
        score += 1
    if has_sim_buff(sim_info, SimBuff.MOODHIDDEN_IMAGINATIVE) or has_sim_buff(
            sim_info,
            SimBuff.MOODHIDDEN_MUSER_TRAITREPLACEMENT) or has_sim_buff(
                sim_info, SimBuff.MOODHIDDEN_MUSERER_TRAITREPLACEMENT):
        score += 1
    if has_sim_buff(sim_info, SimBuff.MOODHIDDEN_SILLY) or has_sim_buff(
            sim_info, SimBuff.MOODHIDDEN_HYSTERICAL):
        score += 1
    if has_sim_buff(sim_info, SimBuff.MOODHIDDEN_DEPRESSED) or has_sim_buff(
            sim_info, SimBuff.MOODHIDDEN_GLOOMIER):
        score += -5
    if has_sim_buff(sim_info, SimBuff.MOODHIDDEN_STRESSED):
        score += -5
    if has_sim_buff(sim_info, SimBuff.MOODHIDDEN_MISERABLE):
        score += -5
    if has_sim_buff(sim_info, SimBuff.MOODHIDDEN_ENRAGED) or (has_sim_buff(
            sim_info, SimBuff.MOODHIDDEN_FURIOUS) or has_sim_buff(
                sim_info, SimBuff.MOODHIDDEN_HOTHEAD2)) or has_sim_buff(
                    sim_info, SimBuff.MOODHIDDEN_HOTHEAD3):
        score += -5
    if has_sim_buff(target_sim_info, SimBuff.OBJECT_DRINK_FLIRTY):
        score += 10
    if has_sim_buff(target_sim_info, SimBuff.BROKENUPORDIVORCED_HIDDEN):
        score += -5
    if has_relationship_bit_with_sim(
            sim_info, target_sim_info,
            SimRelationshipBit.ROMANTIC_HASBEENUNFAITHFUL):
        score += -8
    if len(
            get_sim_ids_with_relationsip_bit(
                sim_info,
                SimRelationshipBit.SHORTTERM_JUSTBROKEUPORDIVORCED)) > 0:
        score += -18
    if has_sim_situation_job(
            sim_info,
            SimSituationJob.RESTAURANTDINER_SUB_NPC_BADDATE_ANGRYSIM):
        score += -25
    current_higiene_motive = get_sim_motive_value(sim_info, SimMotive.HYGIENE)
    if current_higiene_motive <= -50:
        score += -12
    if current_higiene_motive == -100:
        score += -8
    return score