def on_interaction_test(cls, interaction_context, interaction_target): sim = cls.get_interaction_sim(interaction_context) if CNSimUtils.can_have_sex(sim): return False if is_sim_in_sex(sim) or (is_sim_going_to_sex(sim) or is_sim_in_sex(interaction_target) ) or is_sim_going_to_sex(interaction_target): return False return True
def on_interaction_test(cls, interaction_context, interaction_target): if not TurboTypesUtil.Sims.is_sim(interaction_target): return False sim = cls.get_interaction_sim(interaction_context) if is_sim_in_sex(sim) or (is_sim_going_to_sex(sim) or is_sim_in_sex(interaction_target) ) or is_sim_going_to_sex(interaction_target): return False return True
def on_interaction_test(cls, interaction_context, interaction_target): sim = cls.get_interaction_sim(interaction_context) if is_sim_in_sex(sim) or (is_sim_going_to_sex(sim) or is_sim_in_sex(interaction_target) ) or is_sim_going_to_sex(interaction_target): return False if not CNSimUtils.can_have_sex(sim): return False if is_sim_outfit_fullbody(sim): return False if get_sim_body_state(sim, 6) == BodyState.OUTFIT: return True return False
def on_interaction_test(cls, interaction_context, interaction_target): if not TurboTypesUtil.Sims.is_sim(interaction_target): return False sim = cls.get_interaction_sim(interaction_context) if is_sim_in_sex(sim) or (is_sim_going_to_sex(sim) or is_sim_in_sex(interaction_target) ) or is_sim_going_to_sex(interaction_target): return False if get_sim_body_state(interaction_target, 6) != BodyState.OUTFIT: return True if get_sim_body_state(interaction_target, 7) != BodyState.OUTFIT: return True return False
def _sim_miscarriage_reaction(sim_identifier): line_of_sight = TurboMathUtil.LineOfSight.create( TurboSimUtil.Location.get_routing_surface(sim_identifier), TurboSimUtil.Location.get_position(sim_identifier), 8.0) for sim in TurboManagerUtil.Sim.get_all_sim_instance_gen(humans=True, pets=False): if sim is sim_identifier: pass if TurboSimUtil.Age.is_younger_than(sim, TurboSimUtil.Age.BABY, or_equal=True): pass while not is_sim_in_sex(sim): if is_sim_going_to_sex(sim): pass if has_sim_situations(sim, (SimSituation.GRIMREAPER, )): pass if not is_sim_available(sim): pass if not TurboMathUtil.LineOfSight.test( line_of_sight, TurboSimUtil.Location.get_position(sim)): pass TurboSimUtil.Interaction.push_affordance( sim, SimInteraction.WW_PREGNANCY_MISCARRIAGE_REACTION, target=sim_identifier, interaction_context=TurboInteractionUtil.InteractionContext. SOURCE_SCRIPT, insert_strategy=TurboInteractionUtil.QueueInsertStrategy.NEXT, must_run_next=True, priority=TurboInteractionUtil.Priority.Critical, run_priority=TurboInteractionUtil.Priority.Critical)
def on_interaction_test(cls, interaction_context, interaction_target): if not TurboTypesUtil.Sims.is_sim(interaction_target): return False if not get_nudity_setting(NuditySetting.UNDERWEAR_SWITCH_STATE, variable_type=bool) or has_sim_trait( interaction_target, SimTrait.WW_NO_UNDERWEAR): return False sim = cls.get_interaction_sim(interaction_context) if is_sim_in_sex(sim) or (is_sim_going_to_sex(sim) or is_sim_in_sex(interaction_target) ) or is_sim_going_to_sex(interaction_target): return False if CNSimUtils.can_have_sex(interaction_target): return False return True
def update_sim_coming_pregnancy(sim_identifier, force=False): sim_info = TurboManagerUtil.Sim.get_sim_info(sim_identifier) if sim_ev(sim_info).pregnancy_coming_flag is False: return if is_sim_in_sex(sim_info) or is_sim_going_to_sex(sim_info): return if sim_ev(sim_info).pregnancy_counter <= 120 and force is False: return sim_ev(sim_info).pregnancy_coming_flag = False sim_ev(sim_info).pregnancy_counter = 0 partners_ids_list = get_sim_ids_with_relationsip_bit( sim_info, SimRelationshipBit.WW_POTENTIAL_PREGNANCY_PARENT) if not partners_ids_list: return sims_list = list() for partner_sim_id in partners_ids_list: partner_sim_info = TurboManagerUtil.Sim.get_sim_info(partner_sim_id) while partner_sim_info is not None: sims_list.append(partner_sim_info) remove_relationsip_bit_with_sim( sim_info, partner_sim_info, SimRelationshipBit.WW_POTENTIAL_PREGNANCY_PARENT) if not sims_list: return random_sim_partner = random.choice(sims_list) apply_sim_pregnancy(sim_info, random_sim_partner)
def on_interaction_test(cls, interaction_context, interaction_target): if not TurboTypesUtil.Sims.is_sim(interaction_target): return False if has_sim_trait(interaction_target, SimTrait.GENDEROPTIONS_TOILET_STANDING): return False sim = cls.get_interaction_sim(interaction_context) if is_sim_in_sex(sim) or (is_sim_going_to_sex(sim) or is_sim_in_sex(interaction_target) ) or is_sim_going_to_sex(interaction_target): return False if not CNSimUtils.can_have_sex(interaction_target): return False if not has_loaded_strapon(): return False return True
def _trigger_desire_reaction_on_game_update(): for sim in TurboManagerUtil.Sim.get_all_sim_instance_gen(humans=True, pets=False): if TurboSimUtil.Age.is_younger_than(sim, TurboSimUtil.Age.CHILD): continue if not CNSimUtils.can_have_sex(sim): continue if not is_sim_in_sex(sim): if is_sim_going_to_sex(sim): continue if has_sim_situations(sim, (SimSituation.GRIMREAPER, SimSituation.FIRE, SimSituation.BABYBIRTH_HOSPITAL)): continue if not is_sim_available(sim): continue line_of_sight = TurboMathUtil.LineOfSight.create(TurboSimUtil.Location.get_routing_surface(sim), TurboSimUtil.Location.get_position(sim), 8.0) for target in TurboManagerUtil.Sim.get_all_sim_instance_gen(humans=True, pets=False): if sim is target: continue if TurboSimUtil.Age.is_younger_than(target, TurboSimUtil.Age.CHILD): continue if not _has_reaction_to_nudity(sim, target): continue if TurboSimUtil.Gender.get_gender(target) not in get_sim_preferenced_genders(sim): continue if not TurboSimUtil.Location.is_visible(target): continue if TurboSimUtil.Spawner.is_leaving(target): continue (desire_limit, desire_increase) = _get_desire_nudity_value(target) if not desire_limit <= 0 and desire_increase > 0: if get_sim_desire_level(sim) > desire_limit: continue if not TurboMathUtil.LineOfSight.test(line_of_sight, TurboSimUtil.Location.get_position(target)): continue change_sim_desire_level(sim, desire_increase)
def get_sims_for_sex(skip_males=False, skip_females=False, skip_cmales=False, skip_cfemales=False, only_npc=False, relative_sims=(), min_sims_age=TurboSimUtil.Age.CHILD, max_sims_age=TurboSimUtil.Age.ELDER, skip_sims_ids=()): for sim in TurboManagerUtil.Sim.get_all_sim_instance_gen(humans=True, pets=False): if TurboManagerUtil.Sim.get_sim_id(sim) in skip_sims_ids: continue if only_npc is True and TurboSimUtil.Sim.is_player(sim): continue if skip_cmales is True and get_sim_sex_gender(sim, ignore_sim_specific_gender=True) == SexGenderType.CMALE: continue if skip_males is True and get_sim_sex_gender(sim, ignore_sim_specific_gender=True) == SexGenderType.MALE: continue if skip_cfemales is True and get_sim_sex_gender(sim, ignore_sim_specific_gender=True) == SexGenderType.CFEMALE: continue if skip_females is True and get_sim_sex_gender(sim, ignore_sim_specific_gender=True) == SexGenderType.FEMALE: continue if not TurboSimUtil.Age.is_younger_than(sim, min_sims_age): if TurboSimUtil.Age.is_older_than(sim, max_sims_age): continue if not (is_sim_in_sex(sim) or is_sim_going_to_sex(sim)): if sim_ev(sim).active_pre_sex_handler is not None: continue if has_sim_traits(sim, (SimTrait.HIDDEN_ISEVENTNPC_CHALLENGE, SimTrait.ISGRIMREAPER)): continue if not is_sim_available(sim): continue if relative_sims: is_incest = False for incest_test_sim in relative_sims: if is_true_family_relationship(sim, incest_test_sim): is_incest = True break if is_incest is True: continue yield TurboManagerUtil.Sim.get_sim_id(sim)
def _is_sim_ready_to_undress(sim): if is_sim_in_sex(sim) or is_sim_going_to_sex(sim): return False if get_sim_actual_body_state( sim, 6) == BodyState.NUDE and get_sim_actual_body_state( sim, 7) == BodyState.NUDE: return False if has_sim_traits(sim, (SimTrait.HIDDEN_ISEVENTNPC_CHALLENGE, )): return False if has_sim_situations( sim, (SimSituation.BARISTA_VENUE, SimSituation.HIREDNPC_BARISTA, SimSituation.BARBARTENDER, SimSituation.BARTENDER_RESTAURANT, SimSituation.HIREDNPC_BARTENDER, SimSituation.HIREDNPC_CATERER, SimSituation.HIREDNPC_CATERER_VEGETARIAN, SimSituation.HIREDNPC_DJ, SimSituation.HIREDNPC_DJ_LEVEL10, SimSituation.SINGLEJOB_CLUB_DJ, SimSituation.SINGLEJOB_CLUB_DJ_LEVEL10, SimSituation.HIREDNPC_ENTERTAINER_GUITAR, SimSituation.HIREDNPC_ENTERTAINER_MICCOMEDY, SimSituation.HIREDNPC_ENTERTAINER_ORGAN, SimSituation.HIREDNPC_ENTERTAINER_PIANO, SimSituation.HIREDNPC_ENTERTAINER_VIOLIN, SimSituation.BUTLER_SITUATION, SimSituation.GARDENER_SERVICE_SITUATION, SimSituation.NANNY_SITUATION, SimSituation.GYMTRAINER_VENUE, SimSituation.LANDLORD, SimSituation.LIBRARYVENUE_LIBRARIAN, SimSituation.MAID_SITUATION, SimSituation.MAILMAN_SITUATION, SimSituation.PIZZADELIVERY_NEW, SimSituation.FORESTRANGER_VACATIONARRIVAL, SimSituation.REFLEXOLOGIST_VENUE, SimSituation.REPAIR_SITUATION, SimSituation.TRAGICCLOWN, SimSituation.YOGAINSTRUCTOR_VENUE, SimSituation.MASSAGETHERAPIST_VENUE, SimSituation.MASSAGETHERAPIST_SERVICECALL, SimSituation.CHEFSITUATION, SimSituation.HOST_1, SimSituation.RESTAURANT_WAITSTAFF, SimSituation.RESTAURANTDINER_SUB_NPC_CRITIC, SimSituation.RETAILEMPLOYEE_HARDWORKER, SimSituation.RETAILEMPLOYEE_NPCSTORE_HARDWORKER, SimSituation.SINGLEJOB_COWORKER_RETAILEMPLOYEE, SimSituation.HIREDNPC_STALLVENDOR, SimSituation.HIREDNPC_VENDORSTALL, SimSituation.OPENSTREETS_STALLVENDOR, SimSituation.CAREER_DOCTOR_NPC_DOCTOR, SimSituation.CAREER_DOCTOR_NPC_ASSISTANT, SimSituation.CAREER_DOCTOR_NPC_DOCTOR_DIAGNOSER, SimSituation.CAREER_DOCTOR_NPC_NURSE, SimSituation.CAREER_DOCTOR_NPC_PATIENT_ADMITTED, SimSituation.DETECTIVE_APB, SimSituation.DETECTIVE_APBNEUTRAL, SimSituation.CAREER_DETECTIVE_APBPLAYER, SimSituation.SINGLEJOB_COWORKER_SCIENTIST, SimSituation.SINGLEJOB_COWORKER_SCIENTIST_FRONTDESK, SimSituation.CAREEREVENTSITUATIONS_SCIENTISTCAREER_MAIN, SimSituation.GRIMREAPER, SimSituation.FIRE, SimSituation.BABYBIRTH_HOSPITAL, SimSituation.PARK_CHILDPLAYING, SimSituation.CAREGIVER_TODDLER, SimSituation.DATE, SimSituation.DATE_TEEN)): return False if not is_sim_available(sim): return False if not has_sim_permission_for_nudity(sim)[0]: return False return True
def on_interaction_test(cls, interaction_context, interaction_target): sim = cls.get_interaction_sim(interaction_context) if is_sim_in_sex(sim) or is_sim_going_to_sex(sim): return False if get_sim_body_state(sim, TurboCASUtil.BodyType.SHOES) == BodyState.OUTFIT: return True return False
def on_interaction_test(cls, interaction_context, interaction_target): if not TurboTypesUtil.Sims.is_sim(interaction_target): return False if TurboSimUtil.Age.is_younger_than(interaction_target, TurboSimUtil.Age.CHILD): return False if CNSimUtils.can_have_sex(interaction_target): return False if is_sim_in_sex(cls.get_interaction_sim( interaction_context)) or is_sim_going_to_sex( cls.get_interaction_sim(interaction_context)): return False if is_sim_in_sex(interaction_target) or is_sim_going_to_sex( interaction_target): return False if not has_sim_trait(interaction_target, SimTrait.GENDEROPTIONS_TOILET_STANDING): return False return True
def _react_to_sims_sex(sim): if not get_sex_setting(SexSetting.REACTION_TO_SEX_STATE, variable_type=bool): return False if TurboSimUtil.Age.is_younger_than(sim, TurboSimUtil.Age.BABY, or_equal=True): return False registered_sex_handlers = get_active_sex_handlers() if not registered_sex_handlers: return False try_to_react = True if sim_ev(sim).sex_reaction_attempt_cooldown > 0: try_to_react = False if sim_ev(sim).sex_reaction_cooldown > 0: try_to_react = False if try_to_react is False: return False if is_sim_in_sex(sim) or is_sim_going_to_sex(sim): return False if has_sim_situations(sim, (SimSituation.GRIMREAPER, SimSituation.FIRE, SimSituation.BABYBIRTH_HOSPITAL)): return False if not is_sim_available(sim): return False for interaction_id in TurboSimUtil.Interaction.get_running_interactions_ids( sim): if interaction_id == SimInteraction.WW_STOP_SEX: return True line_of_sight = TurboMathUtil.LineOfSight.create( TurboSimUtil.Location.get_routing_surface(sim), TurboSimUtil.Location.get_position(sim), 8.0) for sex_handler in registered_sex_handlers: if not sex_handler.is_playing is False: if sex_handler.is_ready_to_unregister is True: continue if sex_handler.get_identifier() in sim_ev( sim).sex_reaction_handlers_list: continue if sex_handler.get_creator_sim_id( ) == TurboManagerUtil.Sim.get_sim_id(sim): continue sex_interaction_los_position = sex_handler.get_los_position() if not TurboMathUtil.LineOfSight.test( line_of_sight, sex_interaction_los_position): continue sim_ev(sim).sex_reaction_attempt_cooldown = 2 if _jealousy_from_sex_reaction(sim, sex_handler): return True if _general_sex_reaction(sim, sex_handler): return True return False
def _reaction_to_sims_cum(sim): if not get_sex_setting(SexSetting.REACTION_TO_CUM_STATE, variable_type=bool): return False if TurboSimUtil.Age.is_younger_than(sim, TurboSimUtil.Age.TODDLER, or_equal=True): return False full_reaction_cooldown = sim_ev(sim).full_cum_reaction_cooldown inner_reaction_cooldown = sim_ev(sim).inner_cum_reaction_cooldown if full_reaction_cooldown > 0 and inner_reaction_cooldown > 0: return False if is_sim_in_sex(sim) or is_sim_going_to_sex(sim): return False if not is_sim_available(sim): return False if has_sim_situations(sim, (SimSituation.GRIMREAPER, SimSituation.FIRE, SimSituation.BABYBIRTH_HOSPITAL)): return False if _has_sim_visible_cum(sim): return False line_of_sight = TurboMathUtil.LineOfSight.create( TurboSimUtil.Location.get_routing_surface(sim), TurboSimUtil.Location.get_position(sim), 2.5) targets = list() for target in TurboManagerUtil.Sim.get_all_sim_instance_gen(humans=True, pets=False): if sim is target: continue if TurboSimUtil.Age.is_younger_than(target, TurboSimUtil.Age.CHILD): continue if has_relationship_bit_with_sim(sim, target, SimRelationshipBit.WW_JUST_HAD_SEX): continue if not _has_sim_visible_cum(target): continue if not TurboSimUtil.Location.is_visible(target): continue if TurboSimUtil.Spawner.is_leaving(target): continue if not TurboMathUtil.LineOfSight.test( line_of_sight, TurboSimUtil.Location.get_position(target)): continue targets.append(target) if targets: is_mixer_only = _is_only_mixer_reaction(sim) target = random.choice(targets) if _cum_reaction(sim, target, only_mixer=is_mixer_only): return True return False
def on_interaction_test(cls, interaction_context, interaction_target): sim = cls.get_interaction_sim(interaction_context) if is_sim_outfit_fullbody(sim): return False if is_sim_in_sex(sim) or is_sim_going_to_sex(sim): return False if TurboSimUtil.CAS.get_current_outfit( sim)[0] == TurboCASUtil.OutfitCategory.BATHING: return True if get_sim_actual_body_state( sim, 6) != BodyState.OUTFIT or get_sim_actual_body_state( sim, 7) != BodyState.OUTFIT: return True return False
def on_interaction_test(cls, interaction_context, interaction_target): sim = cls.get_interaction_sim(interaction_context) if not CNSimUtils.can_have_sex(sim): return False if is_sim_in_sex(sim) or is_sim_going_to_sex(sim): return False if is_sim_outfit_fullbody(sim): return True if get_sim_body_state( sim, TurboCASUtil.BodyType.UPPER_BODY ) == BodyState.OUTFIT and get_sim_body_state( sim, TurboCASUtil.BodyType.LOWER_BODY) == BodyState.OUTFIT: return True return False
def on_interaction_test(cls, interaction_context, interaction_target): if not TurboTypesUtil.Sims.is_sim(interaction_target): return False sim = cls.get_interaction_sim(interaction_context) if not CNSimUtils.teen_sex_is_enabled() and ( CNSimUtils.is_child_or_teen(sim) or CNSimUtils.is_child_or_teen(interaction_target)): return False skill_level = get_sim_nudity_skill_level(sim) if skill_level <= 1: return False if is_sim_in_sex(sim) or (is_sim_going_to_sex(sim) or is_sim_in_sex(interaction_target) ) or is_sim_going_to_sex(interaction_target): return False if not has_sim_permission_for_nudity(sim)[0]: return False if is_sim_outfit_fullbody(interaction_target): return True if get_sim_body_state(interaction_target, 6) == BodyState.OUTFIT: return True if get_sim_body_state(interaction_target, 7) == BodyState.OUTFIT: return True return False
def on_interaction_test(cls, interaction_context, interaction_target): sim = cls.get_interaction_sim(interaction_context) if not get_nudity_setting(NuditySetting.UNDERWEAR_SWITCH_STATE, variable_type=bool) or has_sim_trait( sim, SimTrait.WW_NO_UNDERWEAR): return False if CNSimUtils.can_have_sex(sim): return False if is_sim_in_sex(sim) or is_sim_going_to_sex(sim): return False if TurboSimUtil.Gender.is_male(sim): return False if get_sim_body_state( sim, TurboCASUtil.BodyType.UPPER_BODY) == BodyState.UNDERWEAR: return True return False
def on_interaction_test(cls, interaction_context, interaction_target): sim = cls.get_interaction_sim(interaction_context) if not get_nudity_setting(NuditySetting.UNDERWEAR_SWITCH_STATE, variable_type=bool) or has_sim_trait( sim, SimTrait.WW_NO_UNDERWEAR): return False if is_sim_in_sex(sim) or is_sim_going_to_sex(sim): return False if TurboSimUtil.Gender.is_male(sim): return False if is_underwear_outfit(get_modified_outfit(sim)[0]) and ( not is_sim_bottom_underwear(sim) or TurboSimUtil.Gender.is_female(sim) and not is_sim_top_underwear(sim)): return True return False
def update_sim_nudity_skill_on_active_nudity(sim_identifier): if TurboSimUtil.Age.is_younger_than(sim_identifier, TurboSimUtil.Age.CHILD): return if CNSimUtils.can_have_sex(sim_identifier): return if is_sim_in_sex(sim_identifier) or is_sim_going_to_sex(sim_identifier): return if not is_sim_available(sim_identifier): return sim_outfit_level = get_sim_outfit_level(sim_identifier) if sim_outfit_level == OutfitLevel.OUTFIT: return sims_around_value = _get_sims_around_value(sim_identifier, max_sims=6) if sim_outfit_level == OutfitLevel.NUDE: increase_sim_nudity_skill( sim_identifier, sims_around_value * get_nudity_skill_points_modifier( NuditySkillIncreaseReason.BEING_IN_NAKED_OUTFIT), extra_fatigue=0.05, reason=NuditySkillIncreaseReason.BEING_IN_NAKED_OUTFIT) elif sim_outfit_level == OutfitLevel.BATHING: sim_nudity_skill_level = get_sim_nudity_skill_level(sim_identifier) increase_sim_nudity_skill( sim_identifier, sims_around_value * (get_nudity_skill_points_modifier( NuditySkillIncreaseReason.BEING_IN_BATHING_OUTFIT) / sim_nudity_skill_level), extra_fatigue=0.15, reason=NuditySkillIncreaseReason.BEING_IN_BATHING_OUTFIT) elif sim_outfit_level == OutfitLevel.REVEALING or sim_outfit_level == OutfitLevel.UNDERWEAR: sim_nudity_skill_level = get_sim_nudity_skill_level(sim_identifier) increase_sim_nudity_skill( sim_identifier, sims_around_value * (get_nudity_skill_points_modifier( NuditySkillIncreaseReason.BEING_IN_REVEALING_OUTFIT) / (sim_nudity_skill_level * sim_nudity_skill_level)), extra_fatigue=0.15, reason=NuditySkillIncreaseReason.BEING_IN_REVEALING_OUTFIT)
def on_interaction_test(cls, interaction_context, interaction_target): sim = cls.get_interaction_sim(interaction_context) if is_sim_in_sex(sim) or is_sim_going_to_sex(sim): return False return True
def react_to_sims_nudity(sim): if not get_nudity_setting(NuditySetting.REACTION_TO_NUDITY_STATE, variable_type=bool): return False if TurboSimUtil.Age.is_younger_than(sim, TurboSimUtil.Age.TODDLER, or_equal=True): return False full_reaction_cooldown = sim_ev(sim).full_nudity_reaction_cooldown inner_reaction_cooldown = sim_ev(sim).inner_nudity_reaction_cooldown if full_reaction_cooldown > 0: return False if inner_reaction_cooldown > 0: return False if full_reaction_cooldown > 0 and inner_reaction_cooldown > 0: return False if is_sim_in_sex(sim) or is_sim_going_to_sex(sim): return False if has_sim_situations(sim, (SimSituation.GRIMREAPER, SimSituation.FIRE, SimSituation.BABYBIRTH_HOSPITAL)): return False sim_outfit_level = get_sim_outfit_level(sim) if sim_outfit_level == OutfitLevel.NUDE or sim_outfit_level == OutfitLevel.BATHING: return False if not is_sim_available(sim): return False has_permission_to_nudity = None line_of_sight = TurboMathUtil.LineOfSight.create( TurboSimUtil.Location.get_routing_surface(sim), TurboSimUtil.Location.get_position(sim), 8.0) targets = list() for target in TurboManagerUtil.Sim.get_all_sim_instance_gen(humans=True, pets=False): if sim is target: continue if has_relationship_bit_with_sim(sim, target, SimRelationshipBit.WW_JUST_HAD_SEX): continue if TurboSimUtil.Age.is_younger_than(target, TurboSimUtil.Age.CHILD): continue if is_sim_in_sex(target): continue if not TurboSimUtil.Location.is_visible(target): continue if TurboSimUtil.Spawner.is_leaving(target): continue target_outfit_level = get_sim_outfit_level(target) if target_outfit_level != OutfitLevel.NUDE and target_outfit_level != OutfitLevel.BATHING: continue if not TurboMathUtil.LineOfSight.test( line_of_sight, TurboSimUtil.Location.get_position(target)): continue if target_outfit_level == OutfitLevel.BATHING: extra_skill_level = 1 else: extra_skill_level = 0 update_sim_nudity_skill_on_seeing_nudity(sim, target) if has_permission_to_nudity is None: has_permission_to_nudity = has_sim_permission_for_nudity( sim, extra_skill_level=extra_skill_level)[0] if has_permission_to_nudity is True: continue targets.append(target) if targets: is_mixer_only = _is_only_mixer_reaction(sim) target = random.choice(targets) if _nudity_reaction(sim, target, only_mixer=is_mixer_only): return True return False