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
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_nudity_skill_on_mirror_use(sim_identifier): if sim_ev(sim_identifier ).is_running_mirror_nudity_skill_interaction is False: return if not TurboSimUtil.Interaction.is_running_interaction( sim_identifier, SimInteraction.WW_MIRROR_ADMIRE_YOUR_BODY): sim_ev( sim_identifier).is_running_mirror_nudity_skill_interaction = False return sim_outfit_level = get_sim_outfit_level(sim_identifier) sim_nudity_skill_level = get_sim_nudity_skill_level(sim_identifier) if sim_outfit_level == OutfitLevel.NUDE or sim_outfit_level == OutfitLevel.BATHING: increase_sim_nudity_skill( sim_identifier, get_nudity_skill_points_modifier( NuditySkillIncreaseReason.MIRROR_NAKED_OUTFIT) / sim_nudity_skill_level, extra_fatigue=0.2, reason=NuditySkillIncreaseReason.MIRROR_NAKED_OUTFIT) else: increase_sim_nudity_skill( sim_identifier, get_nudity_skill_points_modifier( NuditySkillIncreaseReason.MIRROR_REVEALING_OUTFIT) / sim_nudity_skill_level, extra_fatigue=0.05, reason=NuditySkillIncreaseReason.MIRROR_REVEALING_OUTFIT)
def trigger_story_progression(): story_progression_debug_sims_count = 0 story_progression_debug_data = list() for sim_info in TurboManagerUtil.Sim.get_all_sim_info_gen(humans=True, pets=False): if TurboSimUtil.Age.is_younger_than(sim_info, TurboSimUtil.Age.CHILD): pass if not TurboSimUtil.Component.has_component( sim_info, TurboComponentUtil.ComponentType.STATISTIC): pass if has_sim_reached_max_nudity_skill_level(sim_info): pass nudity_skill_value = get_sim_nudity_skill_level( sim_info) + get_sim_nudity_skill_progress(sim_info) influence_amount = _update_and_get_influence_score(sim_info) if influence_amount > 0: increase_sim_nudity_skill(sim_info, influence_amount) story_progression_debug_data.append( (TurboSimUtil.Name.get_name(sim_info), nudity_skill_value, influence_amount)) story_progression_debug_sims_count += 1 from wickedwhims.debug.debug_controller import is_main_debug_flag_enabled if is_main_debug_flag_enabled(): debug_text = '' for ((sim_first_name, sim_last_name), current_skill_value, influence_amount) in story_progression_debug_data: debug_text += '\n' + str(sim_first_name) + ' ' + str( sim_last_name) + ': ' + str( '%.2f' % current_skill_value) + ' -> ' + str( '%.2f' % (current_skill_value + influence_amount / 100)) nudity_notification(text='Checked Sims: ' + str(story_progression_debug_sims_count) + '\nLeveled Sims:' + debug_text, title='Nudity Story Progression')
def _has_chance_for_random_undressing(sim_info): if not get_nudity_setting(NuditySetting.NUDITY_SWITCH_STATE, variable_type=bool): return False if get_nudity_setting( NuditySetting.INTERACTION_AUTONOMY_UNDRESSING_TYPE, variable_type=int) == NudityAutonomyUndressLevelSetting.DISABLED: return False if get_nudity_setting( NuditySetting.AUTONOMY_TYPE, variable_type=int ) == NudityAutonomyTypeSetting.DISABLED or get_nudity_setting( NuditySetting.AUTONOMY_TYPE, variable_type=int ) == NudityAutonomyTypeSetting.NPC_ONLY and TurboSimUtil.Sim.is_player( sim_info): return False if not has_sim_permission_for_nudity(sim_info)[0]: return False if get_nudity_setting( NuditySetting.INTERACTION_AUTONOMY_UNDRESSING_TYPE, variable_type=int) == NudityAutonomyUndressLevelSetting.ALWAYS: return True if get_nudity_setting( NuditySetting.INTERACTION_AUTONOMY_UNDRESSING_TYPE, variable_type=int) == NudityAutonomyUndressLevelSetting.RANDOM: base_chance = 0.0 base_chance += 0.08 * get_sim_nudity_skill_level(sim_info) if is_sim_exhibitionist(sim_info): base_chance += 0.1 if random.uniform(0, 1) <= base_chance: return True return False
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 _outside_test(sim, _, ignore_location_test=False, **__): if ignore_location_test is True: return if TurboWorldUtil.Lot.is_location_outside( TurboSimUtil.Location.get_location(sim)): return (-110 + 15 * (get_sim_nudity_skill_level(sim) - 1), NudityPermissionDenied.OUTSIDE)
def _wickedwhims_increase_sim_nudity_skill_on_related_interactions(interaction_instance): if not get_nudity_setting(NuditySetting.NUDITY_SWITCH_STATE, variable_type=bool): return interaction_guid = TurboResourceUtil.Resource.get_guid64(interaction_instance) sim = TurboInteractionUtil.get_interaction_sim(interaction_instance) for (interaction_id, direct_target, skill_points) in NUDE_REWARD_INTERACTION_IDS: if interaction_id != interaction_guid: continue if direct_target is True: target_sim = TurboInteractionUtil.get_interaction_target(interaction_instance) or sim if target_sim is None: target_sim = sim else: target_sim = sim if target_sim is None: return sim_info = TurboManagerUtil.Sim.get_sim_info(target_sim) if sim_info is None: return target_outfit_level = get_sim_outfit_level(target_sim) target_nudity_skill_level = get_sim_nudity_skill_level(target_sim) if target_outfit_level == OutfitLevel.NUDE or target_outfit_level == OutfitLevel.BATHING: increase_sim_nudity_skill(target_sim, skill_points, extra_fatigue=2.0) else: if target_outfit_level == OutfitLevel.REVEALING or target_outfit_level == OutfitLevel.UNDERWEAR: increase_sim_nudity_skill(target_sim, skill_points/target_nudity_skill_level, extra_fatigue=2.0)
def on_interaction_test(cls, interaction_context, interaction_target): sim = cls.get_interaction_sim(interaction_context) if CNSimUtils.can_have_sex(sim): return False nudity_skill_level = get_sim_nudity_skill_level(sim) if nudity_skill_level < 2: 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 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 _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_value(sim, target): base_sim_value = 25 sim_value_modifier = 0 if 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_SIGNIFICANT_OTHER): return base_sim_value / 4 if has_relationship_bit_with_sim(sim, target, SimRelationshipBit.WW_JUST_HAD_SEX): return base_sim_value / 4 if has_relationship_bit_with_sim( sim, target, SimRelationshipBit.ROMANTIC_HAVEDONEWOOHOO_RECENTLY): return base_sim_value / 2 if has_relationship_bit_with_sim( sim, target, SimRelationshipBit.FRIENDSHIP_BFF ) or has_relationship_bit_with_sim( sim, target, SimRelationshipBit.FRIENDSHIP_BFF_EVIL ) or has_relationship_bit_with_sim( sim, target, SimRelationshipBit.FRIENDSHIP_BFF_BROMANTICPARTNER): return base_sim_value / 2 current_nudity_level = get_sim_nudity_skill_level(sim) if is_sim_naturist(sim) and TurboSimUtil.Relationship.is_family( sim, target): base_sim_value = 22.5 elif current_nudity_level == 2: sim_value_modifier = 69.1 if is_sim_exhibitionist(sim): sim_value_modifier += -5 current_friendship_score = int( get_relationship_with_sim(sim, target, RelationshipTrackType.FRIENDSHIP)) current_friendship_score *= 0.45 * current_nudity_level if current_friendship_score > 0 else 0.45 * ( 6 - current_nudity_level) current_romance_score = int( get_relationship_with_sim(sim, target, RelationshipTrackType.ROMANCE)) current_romance_score *= 0.8 * current_nudity_level if current_romance_score > 0 else 0.8 * ( 6 - current_nudity_level) current_relationship_amount = (current_friendship_score + current_romance_score) / 2 if current_relationship_amount > 0: return base_sim_value * ( 1 - current_relationship_amount / 100) + sim_value_modifier if current_relationship_amount < 0: return base_sim_value + base_sim_value * ( abs(current_relationship_amount) / 100) + sim_value_modifier return base_sim_value + sim_value_modifier
def _wickedwhims_strip_clothing_while_admiring_your_body(interaction_instance): interaction_guid = TurboResourceUtil.Resource.get_guid64(interaction_instance) if interaction_guid in ADMIRE_YOUR_BODY_AFFORDANCES: sim = TurboInteractionUtil.get_interaction_sim(interaction_instance) skill_level = get_sim_nudity_skill_level(sim) strip_nude = skill_level >= 3 or skill_level == 2 and TurboWorldUtil.Lot.is_sim_on_home_lot(sim) if strip_nude is True: strip_result = strip_outfit(sim, strip_type_top=StripType.NUDE, strip_type_bottom=StripType.NUDE, save_original=False) set_sim_top_naked_state(sim, True) set_sim_bottom_naked_state(sim, True) set_sim_top_underwear_state(sim, False) set_sim_bottom_underwear_state(sim, False) else: if not TurboSimUtil.CAS.has_outfit(sim, (TurboCASUtil.OutfitCategory.SWIMWEAR, 0)): TurboSimUtil.CAS.generate_outfit(sim, (TurboCASUtil.OutfitCategory.SWIMWEAR, 0)) TurboSimUtil.CAS.set_current_outfit(sim, (TurboCASUtil.OutfitCategory.SWIMWEAR, 0))
def _sims_test(sim, current_score, targets=(), **__): penalty_score = 0 line_of_sight = TurboMathUtil.LineOfSight.create( TurboSimUtil.Location.get_routing_surface(sim), TurboSimUtil.Location.get_position(sim), 10.0) for target in targets or 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.TODDLER, or_equal=True): continue if not is_sim_available(target): continue if not TurboMathUtil.LineOfSight.test( line_of_sight, TurboSimUtil.Location.get_position(target)): continue penalty_score -= _get_sim_value( sim, target) * (6 - get_sim_nudity_skill_level(sim)) if current_score + penalty_score <= 0: break return (penalty_score, NudityPermissionDenied.TOO_MANY_SIMS_AROUND)
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
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 _home_test(sim, _, ignore_location_test=False, **__): if ignore_location_test is True: return if not is_sim_at_home_lot(sim, allow_renting=False): return (-100 + 12.5 * (get_sim_nudity_skill_level(sim) - 1), NudityPermissionDenied.NOT_AT_HOME)
def on_interaction_start(cls, interaction_instance): sim = cls.get_interaction_target(interaction_instance) nudity_debug_info = '' nudity_debug_info += 'Body States:\n' nudity_debug_info += ' Top: ' + str(get_sim_body_state(sim, 6)) + '\n' nudity_debug_info += ' Bottom: ' + str(get_sim_body_state(sim, 7)) + '\n' nudity_debug_info += '\nBody Additional States:\n' nudity_debug_info += ' Top: ' + str( get_sim_additional_body_state(sim, 6, get_sim_body_state( sim, 6))) + '\n' nudity_debug_info += ' Bottom: ' + str( get_sim_additional_body_state(sim, 7, get_sim_body_state( sim, 7))) + '\n' nudity_debug_info += '\nBody Actual States:\n' nudity_debug_info += ' Top: ' + str(get_sim_actual_body_state( sim, 6)) + '\n' nudity_debug_info += ' Bottom: ' + str( get_sim_actual_body_state(sim, 7)) + '\n' nudity_debug_info += '\nOutfit Body Types:\n' nudity_debug_info += ' Has Top: ' + str( has_sim_outfit_top(sim)) + '\n' nudity_debug_info += ' Has Bottom: ' + str( has_sim_outfit_bottom(sim)) + '\n' nudity_debug_info += ' Has Full Body: ' + str( is_sim_outfit_fullbody(sim)) + '\n' nudity_debug_info += '\nNudity Outfit Parts:\n' nudity_debug_info += ' Top: ' + str( sim_ev(sim).nude_outfit_parts[6]) + '\n' nudity_debug_info += ' Bottom: ' + str( sim_ev(sim).nude_outfit_parts[7]) + '\n' nudity_debug_info += ' Feet: ' + str( sim_ev(sim).nude_outfit_parts[8]) + '\n' nudity_debug_info += ' Penis Texture: ' + str( sim_ev(sim).nude_outfit_parts[115]) + '\n' nudity_debug_info += '\nPenis Outfit Parts:\n' nudity_debug_info += ' Soft: ' + str( sim_ev(sim).penis_outfit_parts['soft']) + '\n' nudity_debug_info += ' Hard: ' + str( sim_ev(sim).penis_outfit_parts['hard']) + '\n' nudity_debug_info += '\nPenis Parts Authors:\n' nudity_debug_info += ' Soft: ' + str( sim_ev(sim).outfit_soft_penis_author) + '\n' nudity_debug_info += ' Hard: ' + str( sim_ev(sim).outfit_hard_penis_author) + '\n' nudity_debug_info += '\nPenis State:\n' nudity_debug_info += ' Is Hard: ' + str( sim_ev(sim).is_penis_hard) + '\n' nudity_debug_info += ' Penis Cooldown: ' + str( sim_ev(sim).penis_hard_cooldown) + '\n' nudity_debug_info += '\nOriginal Outfit Data:\n' nudity_debug_info += ' Has Modifications: ' + str( sim_ev(sim).has_original_outfit_modifications) + '\n' nudity_debug_info += ' Category: ' + str( sim_ev(sim).original_outfit_category) + '\n' nudity_debug_info += ' Index: ' + str( sim_ev(sim).original_outfit_index) + '\n' nudity_debug_info += ' Update Locked: ' + str( sim_ev(sim).is_outfit_update_locked) + '\n' nudity_debug_info += '\nNudity Skill:\n' nudity_debug_info += ' Is Naturist/Is Exhibitionist: ' + str( is_sim_naturist(sim)) + '/' + str(is_sim_exhibitionist(sim)) + '\n' nudity_debug_info += ' Level: ' + str( get_sim_nudity_skill_level(sim) + get_sim_nudity_skill_progress(sim)) + '\n' nudity_debug_info += ' Influence Score: ' + str( sim_ev(sim).nudity_skill_influence_score) + '\n' nudity_debug_info += ' Fatigue: ' + str( get_sim_statistic_value( sim, SimCommodity.WW_NUDITY_SKILL_FATIGUE)) + '\n' nudity_debug_info += '\nNudity Reaction:\n' nudity_debug_info += ' Full Reaction Cooldown: ' + str( sim_ev(sim).full_nudity_reaction_cooldown) + '\n' nudity_debug_info += ' Inner Reaction Cooldown: ' + str( sim_ev(sim).inner_nudity_reaction_cooldown) + '\n' nudity_debug_info += '\nSpecial:\n' nudity_debug_info += ' Is Flashing: ' + str( sim_ev(sim).is_flashing) + '\n' nudity_debug_info += ' Toilet Use Outfit State: ' + str( sim_ev(sim).on_toilet_outfit_state) + '\n' nudity_debug_info += ' Breast Feeding Outfit State: ' + str( sim_ev(sim).on_breast_feeding_outfit_state) + '\n' display_notification(text=nudity_debug_info, title=str(TurboSimUtil.Name.get_name(sim)[0]) + ' ' + str(TurboSimUtil.Name.get_name(sim)[1]) + ' Nudity Debug', secondary_icon=sim)