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)
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)
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)
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)
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) }
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)
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)
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
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
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