Example #1
0
def _wickedwhims_undress_bottom_on_toilet_use(interaction_instance):
    global HAS_SIMS_USING_TOILET
    if not get_nudity_setting(NuditySetting.TOILET_USE_UNDRESS_STATE, variable_type=bool):
        return
    interaction_guid = TurboResourceUtil.Resource.get_guid64(interaction_instance)
    if interaction_guid not in TOILET_USE_INTERACTIONS:
        return
    HAS_SIMS_USING_TOILET = True
    sim = TurboInteractionUtil.get_interaction_sim(interaction_instance)
    if sim_ev(sim).on_toilet_outfit_state != OutfitStateBeforeToiletUse.NONE:
        return
    if TurboSimUtil.Age.is_younger_than(sim, TurboSimUtil.Age.CHILD):
        return
    if has_sim_outfit_bottom(sim):
        bottom_body_state = get_sim_body_state(sim, 7)
        if bottom_body_state != BodyState.NUDE:
            strip_result = strip_outfit(sim, strip_type_bottom=StripType.NUDE, allow_stripping_feet=False)
            if strip_result is True:
                sim_ev(sim).on_toilet_outfit_state = int(OutfitStateBeforeToiletUse.UNDERWEAR if bottom_body_state == BodyState.UNDERWEAR else OutfitStateBeforeToiletUse.OUTFIT)
                set_sim_bottom_naked_state(sim, True)
                set_sim_bottom_underwear_state(sim, False)
            else:
                sim_ev(sim).on_toilet_outfit_state = int(OutfitStateBeforeToiletUse.NONE)
    else:
        top_state = StripType.NUDE if TurboSimUtil.Gender.is_male(sim) else StripType.UNDERWEAR if is_sim_top_underwear(sim) else StripType.NUDE
        strip_result = strip_outfit(sim, strip_type_top=top_state, strip_type_bottom=StripType.NUDE)
        if is_sim_outfit_fullbody(sim) and strip_result is True:
            sim_ev(sim).on_toilet_outfit_state = int(OutfitStateBeforeToiletUse.OUTFIT)
            set_sim_top_naked_state(sim, True)
            set_sim_bottom_naked_state(sim, True)
            set_sim_bottom_underwear_state(sim, False)
Example #2
0
 def on_interaction_start(cls, interaction_instance):
     target = cls.get_interaction_target(interaction_instance)
     strip_type_top = StripType.NUDE if get_sim_body_state(
         target, TurboCASUtil.BodyType.UPPER_BODY
     ) == BodyState.UNDERWEAR else StripType.UNDERWEAR if TurboSimUtil.Gender.is_female(
         target) and is_underwear_outfit(
             get_modified_outfit(target)[0]) else StripType.NUDE
     strip_outfit(target, strip_type_top=strip_type_top)
     set_sim_top_naked_state(target, strip_type_top == StripType.NUDE)
     set_sim_top_underwear_state(target, strip_type_top != StripType.NUDE)
     return True
Example #3
0
 def on_interaction_start(cls, interaction_instance):
     target = cls.get_interaction_target(interaction_instance)
     strip_type_bottom = StripType.NUDE if get_sim_body_state(
         target, TurboCASUtil.BodyType.LOWER_BODY
     ) == BodyState.UNDERWEAR else StripType.UNDERWEAR if is_underwear_outfit(
         get_modified_outfit(target)[0]) else StripType.NUDE
     strip_outfit(target, strip_type_bottom=strip_type_bottom)
     set_sim_bottom_naked_state(target, strip_type_bottom == StripType.NUDE)
     set_sim_bottom_underwear_state(target,
                                    strip_type_bottom != StripType.NUDE)
     return True
Example #4
0
def _undress_bottom(sim_info):
    has_top_underwear_on = TurboSimUtil.Gender.is_female(sim_info) and (
        is_underwear_outfit(get_modified_outfit(sim_info)[0])
        and is_sim_top_underwear(sim_info))
    strip_type_top = StripType.NONE if not is_sim_outfit_fullbody(
        sim_info
    ) else StripType.UNDERWEAR if has_top_underwear_on else StripType.NUDE
    strip_outfit(sim_info,
                 strip_type_top=strip_type_top,
                 strip_type_bottom=StripType.NUDE)
    set_sim_top_naked_state(sim_info, strip_type_top == StripType.NUDE)
    set_sim_bottom_naked_state(sim_info, True)
    set_sim_top_underwear_state(sim_info,
                                strip_type_top == StripType.UNDERWEAR)
    set_sim_bottom_underwear_state(sim_info, False)
Example #5
0
 def on_building_basic_elements(cls, interaction_instance, sequence):
     sim = cls.get_interaction_sim(interaction_instance)
     has_top_underwear_on = TurboSimUtil.Gender.is_female(sim) and (
         is_underwear_outfit(get_modified_outfit(sim)[0])
         and is_sim_top_underwear(sim))
     has_bottom_underwear_on = is_underwear_outfit(
         get_modified_outfit(sim)[0]) and is_sim_bottom_underwear(sim)
     strip_type_top = StripType.UNDERWEAR if has_top_underwear_on else StripType.NUDE
     strip_type_bottom = StripType.UNDERWEAR if has_bottom_underwear_on else StripType.NUDE
     strip_result = strip_outfit(sim,
                                 strip_type_top=strip_type_top,
                                 strip_type_bottom=strip_type_bottom,
                                 skip_outfit_change=True)
     if strip_result is True:
         set_sim_top_naked_state(sim, strip_type_top == StripType.NUDE)
         set_sim_bottom_naked_state(sim,
                                    strip_type_bottom == StripType.NUDE)
         set_sim_top_underwear_state(sim,
                                     strip_type_top == StripType.UNDERWEAR)
         set_sim_bottom_underwear_state(
             sim, strip_type_bottom == StripType.UNDERWEAR)
         nudity_notification(
             text=2191667249,
             text_tokens=(sim, ),
             icon=sim,
             sims=(sim, ),
             is_autonomy=cls.get_interaction_source(interaction_instance) ==
             TurboInteractionUtil.InteractionSource.AUTONOMY)
         return TurboSimUtil.CAS.get_change_outfit_element(
             sim, (TurboCASUtil.OutfitCategory.SPECIAL, 0),
             do_spin=True,
             interaction=interaction_instance)
def put_sim_underwear_on(sim_identifier, skip_outfit_change=False):
    sim_info = TurboManagerUtil.Sim.get_sim_info(sim_identifier)
    set_sim_top_naked_state(sim_info, False)
    set_sim_bottom_naked_state(sim_info, False)
    set_sim_top_underwear_state(sim_info, True)
    set_sim_bottom_underwear_state(sim_info, True)
    top_outfit_type = StripType.UNDERWEAR if TurboSimUtil.Gender.is_female(
        sim_info) and get_sim_body_state(
            sim_info, 6) == BodyState.NUDE else StripType.NONE
    bottom_outfit_type = StripType.UNDERWEAR if get_sim_actual_body_state(
        sim_info, 7) == BodyState.NUDE else StripType.NONE
    strip_outfit(sim_info,
                 strip_type_top=top_outfit_type,
                 strip_type_bottom=bottom_outfit_type,
                 skip_outfit_change=skip_outfit_change,
                 save_original=False)
 def on_building_basic_elements(cls, interaction_instance, sequence):
     sim = cls.get_interaction_sim(interaction_instance)
     top_body_state = get_sim_body_state(sim,
                                         TurboCASUtil.BodyType.UPPER_BODY)
     bottom_body_state = get_sim_body_state(
         sim, TurboCASUtil.BodyType.LOWER_BODY)
     strip_type_top = StripType.NUDE if top_body_state == BodyState.UNDERWEAR else StripType.NONE
     strip_type_bottom = StripType.NUDE if bottom_body_state == BodyState.UNDERWEAR else StripType.NONE
     strip_result = strip_outfit(sim,
                                 strip_type_top=strip_type_top,
                                 strip_type_bottom=strip_type_bottom,
                                 skip_outfit_change=True,
                                 save_original=False)
     if strip_result is True:
         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)
         nudity_notification(
             text=3110156917,
             text_tokens=(sim, ),
             icon=sim,
             sims=(sim, ),
             is_autonomy=cls.get_interaction_source(interaction_instance) ==
             TurboInteractionUtil.InteractionSource.AUTONOMY)
         return TurboSimUtil.CAS.get_change_outfit_element(
             sim, (TurboCASUtil.OutfitCategory.SPECIAL, 0),
             do_spin=True,
             interaction=interaction_instance)
Example #8
0
 def on_interaction_start(cls, interaction_instance):
     sim = cls.get_interaction_sim(interaction_instance)
     target = cls.get_interaction_target(interaction_instance)
     strip_result = strip_outfit(sim, strip_type_bottom=StripType.NUDE)
     if strip_result is True:
         set_sim_bottom_naked_state(sim, True)
         set_sim_bottom_underwear_state(sim, False)
         force_nudity_reaction(target, sim)
         return True
     return False
def _wickedwhims_undress_top_on_breast_feeding(interaction_instance):
    if not get_nudity_setting(NuditySetting.BREAST_FEEDING_UNDRESS_STATE,
                              variable_type=bool):
        return
    interaction_guid = TurboResourceUtil.Resource.get_guid64(
        interaction_instance)
    if interaction_guid != BREAST_FEEDING_INTERACTIONS:
        return
    sim = TurboInteractionUtil.get_interaction_sim(interaction_instance)
    if sim_ev(
            sim
    ).on_breast_feeding_outfit_state != OutfitStateBeforeBreastFeeding.NONE:
        return
    if TurboSimUtil.Age.is_younger_than(sim, TurboSimUtil.Age.CHILD):
        return
    if has_sim_outfit_top(sim):
        top_body_state = get_sim_body_state(sim, 6)
        if top_body_state != BodyState.NUDE:
            strip_result = strip_outfit(sim,
                                        strip_type_top=StripType.NUDE,
                                        allow_stripping_gloves=False)
            if strip_result is True:
                sim_ev(sim).on_breast_feeding_outfit_state = int(
                    OutfitStateBeforeBreastFeeding.
                    UNDERWEAR if top_body_state == BodyState.
                    UNDERWEAR else OutfitStateBeforeBreastFeeding.OUTFIT)
                set_sim_top_naked_state(sim, True)
                set_sim_top_underwear_state(sim, False)
            else:
                sim_ev(sim).on_breast_feeding_outfit_state = int(
                    OutfitStateBeforeBreastFeeding.NONE)
    else:
        bottom_state = StripType.UNDERWEAR if is_sim_bottom_underwear(
            sim) else StripType.NUDE
        strip_result = strip_outfit(sim,
                                    strip_type_top=StripType.NUDE,
                                    strip_type_bottom=bottom_state)
        if is_sim_outfit_fullbody(sim) and strip_result is True:
            sim_ev(sim).on_breast_feeding_outfit_state = int(
                OutfitStateBeforeBreastFeeding.OUTFIT)
            set_sim_top_naked_state(sim, True)
            set_sim_top_underwear_state(sim, False)
            set_sim_bottom_naked_state(sim, True)
Example #10
0
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))
Example #11
0
 def on_building_basic_elements(cls, interaction_instance, sequence):
     sim = cls.get_interaction_sim(interaction_instance)
     strip_result = strip_outfit(sim,
                                 strip_bodytype=8,
                                 skip_outfit_change=True)
     if strip_result is True:
         nudity_notification(
             text=4281967896,
             text_tokens=(sim, ),
             icon=sim,
             sims=(sim, ),
             is_autonomy=cls.get_interaction_source(interaction_instance) ==
             TurboInteractionUtil.InteractionSource.AUTONOMY)
         return TurboSimUtil.CAS.get_change_outfit_element(
             sim, (TurboCASUtil.OutfitCategory.SPECIAL, 0),
             do_spin=True,
             interaction=interaction_instance)
Example #12
0
 def on_interaction_start(cls, interaction_instance):
     if has_sim_body_part(cls.get_interaction_target(interaction_instance),
                          TurboCASUtil.BodyType.WRIST_LEFT):
         strip_outfit(cls.get_interaction_target(interaction_instance),
                      strip_bodytype=TurboCASUtil.BodyType.WRIST_LEFT)
     if has_sim_body_part(cls.get_interaction_target(interaction_instance),
                          TurboCASUtil.BodyType.INDEX_FINGER_LEFT):
         strip_outfit(
             cls.get_interaction_target(interaction_instance),
             strip_bodytype=TurboCASUtil.BodyType.INDEX_FINGER_LEFT)
     if has_sim_body_part(cls.get_interaction_target(interaction_instance),
                          TurboCASUtil.BodyType.RING_FINGER_LEFT):
         strip_outfit(cls.get_interaction_target(interaction_instance),
                      strip_bodytype=TurboCASUtil.BodyType.RING_FINGER_LEFT)
     if has_sim_body_part(cls.get_interaction_target(interaction_instance),
                          TurboCASUtil.BodyType.MIDDLE_FINGER_LEFT):
         strip_outfit(
             cls.get_interaction_target(interaction_instance),
             strip_bodytype=TurboCASUtil.BodyType.MIDDLE_FINGER_LEFT)
     return True
 def on_building_basic_elements(cls, interaction_instance, sequence):
     sim = cls.get_interaction_sim(interaction_instance)
     strip_result = strip_outfit(sim,
                                 strip_type_top=StripType.NUDE,
                                 skip_outfit_change=True,
                                 save_original=False)
     if strip_result is True:
         set_sim_top_naked_state(sim, True)
         set_sim_top_underwear_state(sim, False)
         nudity_notification(
             text=1357018163,
             text_tokens=(sim, ),
             icon=sim,
             sims=(sim, ),
             is_autonomy=cls.get_interaction_source(interaction_instance) ==
             TurboInteractionUtil.InteractionSource.AUTONOMY)
         return TurboSimUtil.CAS.get_change_outfit_element(
             sim, (TurboCASUtil.OutfitCategory.SPECIAL, 0),
             do_spin=True,
             interaction=interaction_instance)
Example #14
0
def _wickedwhims_undress_swimwear_on_jumping_to_water(interaction_instance):
    if not get_nudity_setting(NuditySetting.NUDITY_SWITCH_STATE,
                              variable_type=bool):
        return
    interaction_guid = TurboResourceUtil.Resource.get_guid64(
        interaction_instance)
    if interaction_guid not in JUMPING_INTERACTIONS:
        return
    sim_info = TurboManagerUtil.Sim.get_sim_info(
        TurboInteractionUtil.get_interaction_sim(interaction_instance))
    if TurboSimUtil.Age.is_younger_than(sim_info, TurboSimUtil.Age.CHILD):
        return
    if get_modified_outfit(
            sim_info)[0] != TurboCASUtil.OutfitCategory.SWIMWEAR:
        return
    if is_sim_outfit_fullbody(sim_info):
        return
    if random.uniform(0, 1) > 0.1:
        return
    has_stripped = False
    if TurboSimUtil.Gender.is_male(sim_info):
        if get_sim_body_state(sim_info, 7) != BodyState.OUTFIT:
            return
        strip_result = strip_outfit(sim_info, strip_type_bottom=StripType.NUDE)
        if strip_result is True:
            set_sim_bottom_naked_state(sim_info, True)
            has_stripped = True
    else:
        can_undress_top = get_sim_body_state(sim_info, 6) == BodyState.OUTFIT
        can_undress_bottom = get_sim_body_state(sim_info,
                                                7) == BodyState.OUTFIT
        undress_top = False
        undress_bottom = False
        if can_undress_top is True and can_undress_bottom is True:
            if bool(random.getrandbits(1)):
                undress_top = True
            else:
                undress_bottom = True
        elif can_undress_top is True:
            undress_top = True
        elif can_undress_bottom is True:
            undress_bottom = True
        if undress_top is False and undress_bottom is False:
            return
        if undress_top is True:
            strip_result = strip_outfit(sim_info,
                                        strip_type_top=StripType.NUDE)
            if strip_result is True:
                set_sim_top_naked_state(sim_info, True)
                has_stripped = True
        elif undress_bottom is True:
            strip_result = strip_outfit(sim_info,
                                        strip_type_bottom=StripType.NUDE)
            if strip_result is True:
                set_sim_bottom_naked_state(sim_info, True)
                has_stripped = True
    if has_stripped is True:
        display_notification(text=267480274,
                             text_tokens=(sim_info, ),
                             secondary_icon=sim_info)
        if not has_sim_permission_for_nudity(sim_info)[0]:
            add_sim_buff(sim_info,
                         SimBuff.OBJECT_JUMPSTAND_SWIMSUITMALFUNCTION)
        if random.uniform(0, 1) <= 0.45:
            add_sim_buff(sim_info, SimBuff.WW_NUDITY_TEMPORARY_BRAVE)
Example #15
0
 def on_interaction_start(cls, interaction_instance):
     return strip_outfit(cls.get_interaction_target(interaction_instance),
                         strip_bodytype=TurboCASUtil.BodyType.CUMMERBUND)
Example #16
0
 def on_interaction_start(cls, interaction_instance):
     if has_sim_body_part(cls.get_interaction_target(interaction_instance),
                          TurboCASUtil.BodyType.EARRINGS):
         strip_outfit(cls.get_interaction_target(interaction_instance),
                      strip_bodytype=TurboCASUtil.BodyType.EARRINGS)
     if has_sim_body_part(cls.get_interaction_target(interaction_instance),
                          TurboCASUtil.BodyType.NECKLACE):
         strip_outfit(cls.get_interaction_target(interaction_instance),
                      strip_bodytype=TurboCASUtil.BodyType.NECKLACE)
     if has_sim_body_part(cls.get_interaction_target(interaction_instance),
                          TurboCASUtil.BodyType.LIP_RING_LEFT):
         strip_outfit(cls.get_interaction_target(interaction_instance),
                      strip_bodytype=TurboCASUtil.BodyType.LIP_RING_LEFT)
     if has_sim_body_part(cls.get_interaction_target(interaction_instance),
                          TurboCASUtil.BodyType.LIP_RING_RIGHT):
         strip_outfit(cls.get_interaction_target(interaction_instance),
                      strip_bodytype=TurboCASUtil.BodyType.LIP_RING_RIGHT)
     if has_sim_body_part(cls.get_interaction_target(interaction_instance),
                          TurboCASUtil.BodyType.NOSE_RING_LEFT):
         strip_outfit(cls.get_interaction_target(interaction_instance),
                      strip_bodytype=TurboCASUtil.BodyType.NOSE_RING_LEFT)
     if has_sim_body_part(cls.get_interaction_target(interaction_instance),
                          TurboCASUtil.BodyType.NOSE_RING_RIGHT):
         strip_outfit(cls.get_interaction_target(interaction_instance),
                      strip_bodytype=TurboCASUtil.BodyType.NOSE_RING_RIGHT)
     if has_sim_body_part(cls.get_interaction_target(interaction_instance),
                          TurboCASUtil.BodyType.BROW_RING_LEFT):
         strip_outfit(cls.get_interaction_target(interaction_instance),
                      strip_bodytype=TurboCASUtil.BodyType.BROW_RING_LEFT)
     if has_sim_body_part(cls.get_interaction_target(interaction_instance),
                          TurboCASUtil.BodyType.BROW_RING_RIGHT):
         strip_outfit(cls.get_interaction_target(interaction_instance),
                      strip_bodytype=TurboCASUtil.BodyType.BROW_RING_RIGHT)
     return True
Example #17
0
 def on_interaction_start(cls, interaction_instance):
     target = cls.get_interaction_target(interaction_instance)
     sim_ev(target).is_strapon_allowed = False
     if is_strapon_on_sim(target):
         strip_outfit(target, strip_type_bottom=StripType.NUDE)
     return True
Example #18
0
def undress_sim(sim_identifier, actor_data, is_npc_only=False):
    sim_info = TurboManagerUtil.Sim.get_sim_info(sim_identifier)
    if is_npc_only is False:
        undressing_type = get_sex_setting(SexSetting.SEX_UNDRESSING_TYPE,
                                          variable_type=int)
    else:
        undressing_type = get_sex_setting(SexSetting.NPC_SEX_UNDRESSING_TYPE,
                                          variable_type=int)
    if undressing_type == SexUndressingLevelSetting.DISABLED:
        return
    update_nude_body_data(sim_info)
    top_body_state = get_sim_actual_body_state(
        sim_info, TurboCASUtil.BodyType.UPPER_BODY)
    bottom_body_state = get_sim_actual_body_state(
        sim_info, TurboCASUtil.BodyType.LOWER_BODY)
    hands_body_state = get_sim_actual_body_state(sim_info,
                                                 TurboCASUtil.BodyType.GLOVES)
    feet_body_state = get_sim_actual_body_state(sim_info,
                                                TurboCASUtil.BodyType.SHOES)
    if undressing_type == SexUndressingLevelSetting.COMPLETE:
        if top_body_state == BodyState.NUDE and (
                bottom_body_state == BodyState.NUDE and hands_body_state
                == BodyState.NUDE) and feet_body_state == BodyState.NUDE:
            return
        if get_nudity_setting(
                NuditySetting.COMPLETE_UNDRESSING_TYPE,
                variable_type=int) == CompleteUndressingTypeSetting.DEFAULT:
            reset_sim_bathing_outfits(sim_info)
            copy_outfit_to_special(
                sim_info,
                set_special_outfit=True,
                outfit_category_and_index=(TurboCASUtil.OutfitCategory.BATHING,
                                           0),
                override_outfit_parts={
                    115: sim_ev(sim_info).nude_outfit_parts[115]
                })
        else:
            copy_outfit_to_special(
                sim_info,
                set_special_outfit=True,
                outfit_category_and_index=get_modified_outfit(sim_info),
                override_outfit_parts={
                    TurboCASUtil.BodyType.UPPER_BODY:
                    sim_ev(sim_info).nude_outfit_parts[
                        TurboCASUtil.BodyType.UPPER_BODY],
                    TurboCASUtil.BodyType.LOWER_BODY:
                    sim_ev(sim_info).nude_outfit_parts[
                        TurboCASUtil.BodyType.LOWER_BODY],
                    TurboCASUtil.BodyType.SHOES:
                    sim_ev(sim_info).nude_outfit_parts[
                        TurboCASUtil.BodyType.SHOES],
                    TurboCASUtil.BodyType.FULL_BODY:
                    0,
                    TurboCASUtil.BodyType.HAT:
                    0,
                    TurboCASUtil.BodyType.CUMMERBUND:
                    0,
                    TurboCASUtil.BodyType.EARRINGS:
                    0,
                    TurboCASUtil.BodyType.GLASSES:
                    0,
                    TurboCASUtil.BodyType.NECKLACE:
                    0,
                    TurboCASUtil.BodyType.GLOVES:
                    0,
                    TurboCASUtil.BodyType.WRIST_LEFT:
                    0,
                    TurboCASUtil.BodyType.WRIST_RIGHT:
                    0,
                    TurboCASUtil.BodyType.SOCKS:
                    0,
                    TurboCASUtil.BodyType.TIGHTS:
                    0,
                    115:
                    sim_ev(sim_info).nude_outfit_parts[115]
                })
        set_sim_top_naked_state(sim_info, True)
        set_sim_bottom_naked_state(sim_info, True)
        set_sim_top_underwear_state(sim_info, False)
        set_sim_bottom_underwear_state(sim_info, False)
        return
    if actor_data.is_forcing_nude_hands(
    ) and hands_body_state != BodyState.NUDE:
        strip_outfit(sim_info, strip_bodytype=TurboCASUtil.BodyType.GLOVES)
    if actor_data.is_forcing_nude_feet() and feet_body_state != BodyState.NUDE:
        strip_outfit(sim_info, strip_bodytype=TurboCASUtil.BodyType.SHOES)
    if actor_data.get_naked_type() == SexNakedType.ALL:
        if top_body_state == BodyState.NUDE and bottom_body_state == BodyState.NUDE:
            return
        if strip_outfit(sim_info,
                        strip_type_top=StripType.NUDE,
                        strip_type_bottom=StripType.NUDE):
            set_sim_top_naked_state(sim_info, True)
            set_sim_bottom_naked_state(sim_info, True)
            set_sim_top_underwear_state(sim_info, False)
            set_sim_bottom_underwear_state(sim_info, False)
    elif actor_data.get_naked_type() == SexNakedType.TOP:
        if top_body_state == BodyState.NUDE:
            return
        has_bottom_underwear_on = is_underwear_outfit(
            get_modified_outfit(sim_info)[0]) and is_sim_bottom_underwear(
                sim_info)
        strip_type_bottom = StripType.NONE if not is_sim_outfit_fullbody(
            sim_info
        ) else StripType.UNDERWEAR if has_bottom_underwear_on else StripType.NUDE
        if strip_outfit(sim_info,
                        strip_type_top=StripType.NUDE,
                        strip_type_bottom=strip_type_bottom):
            set_sim_top_naked_state(sim_info, True)
            set_sim_bottom_naked_state(sim_info,
                                       strip_type_bottom == StripType.NUDE)
            set_sim_top_underwear_state(sim_info, False)
            set_sim_bottom_underwear_state(
                sim_info, strip_type_bottom == StripType.UNDERWEAR)
    elif actor_data.get_naked_type() == SexNakedType.BOTTOM:
        if bottom_body_state == BodyState.NUDE:
            return
        has_top_underwear_on = TurboSimUtil.Gender.is_female(sim_info) and (
            is_underwear_outfit(get_modified_outfit(sim_info)[0])
            and is_sim_top_underwear(sim_info))
        strip_type_top = StripType.NONE if not is_sim_outfit_fullbody(
            sim_info
        ) else StripType.UNDERWEAR if has_top_underwear_on else StripType.NUDE
        if strip_outfit(sim_info,
                        strip_type_top=strip_type_top,
                        strip_type_bottom=StripType.NUDE):
            set_sim_top_naked_state(sim_info, strip_type_top == StripType.NUDE)
            set_sim_bottom_naked_state(sim_info, True)
            set_sim_top_underwear_state(sim_info,
                                        strip_type_top == StripType.UNDERWEAR)
            set_sim_bottom_underwear_state(sim_info, False)