Пример #1
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)
Пример #2
0
 def on_interaction_start(cls, interaction_instance):
     target = cls.get_interaction_target(interaction_instance)
     if get_nudity_setting(
             NuditySetting.COMPLETE_UNDRESSING_TYPE,
             variable_type=int) == CompleteUndressingTypeSetting.DEFAULT:
         reset_sim_bathing_outfits(target)
         copy_outfit_to_special(
             target,
             set_special_outfit=True,
             outfit_category_and_index=(TurboCASUtil.OutfitCategory.BATHING,
                                        0),
             override_outfit_parts={
                 115: sim_ev(target).nude_outfit_parts[115]
             })
     else:
         copy_outfit_to_special(
             target,
             set_special_outfit=True,
             outfit_category_and_index=get_modified_outfit(target),
             override_outfit_parts={
                 TurboCASUtil.BodyType.UPPER_BODY:
                 sim_ev(target).nude_outfit_parts[
                     TurboCASUtil.BodyType.UPPER_BODY],
                 TurboCASUtil.BodyType.LOWER_BODY:
                 sim_ev(target).nude_outfit_parts[
                     TurboCASUtil.BodyType.LOWER_BODY],
                 TurboCASUtil.BodyType.SHOES:
                 sim_ev(target).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(target).nude_outfit_parts[115]
             })
     set_sim_top_naked_state(target, True)
     set_sim_bottom_naked_state(target, True)
     set_sim_top_underwear_state(target, False)
     set_sim_bottom_underwear_state(target, False)
     return True
Пример #3
0
def get_sim_underwear_data(sim_identifier, outfit_category_and_index):
    sim_info = TurboManagerUtil.Sim.get_sim_info(sim_identifier)
    sim_is_child = TurboSimUtil.Age.get_age(sim_info) is TurboSimUtil.Age.CHILD
    if not get_nudity_setting(NuditySetting.UNDERWEAR_SWITCH_STATE,
                              variable_type=bool) or has_sim_trait(
                                  sim_info, SimTrait.WW_NO_UNDERWEAR):
        return (-1, -1)
    outfit_category = outfit_category_and_index[0]
    outfit_index = outfit_category_and_index[1]
    if outfit_category == TurboCASUtil.OutfitCategory.CAREER or outfit_category == TurboCASUtil.OutfitCategory.SITUATION:
        outfit_category = TurboCASUtil.OutfitCategory.EVERYDAY
        outfit_index = 0
    if outfit_category == TurboCASUtil.OutfitCategory.SPECIAL and outfit_index == 0:
        modified_outfit = get_modified_outfit(sim_info)
        outfit_category = modified_outfit[0]
        outfit_index = modified_outfit[1]
    outfit_code = _get_outfit_category_and_index_code(
        (outfit_category, outfit_index))
    if outfit_code in sim_ev(sim_info).underwear_outfits_parts:
        underwear_data = sim_ev(sim_info).underwear_outfits_parts[outfit_code]
    elif TurboSimUtil.Sim.is_npc(sim_info):
        underwear_data = list(get_random_underwear_set(sim_info))
    else:
        underwear_data = [-1, -1]
    if sim_is_child:
        if TurboSimUtil.Gender.is_male(sim_info):
            if underwear_data[
                    1] == -1 or not TurboCASUtil.Outfit.is_cas_part_loaded(
                        underwear_data[1]):
                underwear_data[1] = DEFAULT_UNDERWEAR_BOTTOM_CHILD_MALE
        else:
            if underwear_data[
                    0] == -1 or not TurboCASUtil.Outfit.is_cas_part_loaded(
                        underwear_data[0]):
                underwear_data[0] = DEFAULT_UNDERWEAR_TOP_CHILD_FEMALE
            if underwear_data[
                    1] == -1 or not TurboCASUtil.Outfit.is_cas_part_loaded(
                        underwear_data[1]):
                underwear_data[1] = DEFAULT_UNDERWEAR_BOTTOM_CHILD_FEMALE
    else:
        if TurboSimUtil.Gender.is_male(sim_info):
            if underwear_data[
                    1] == -1 or not TurboCASUtil.Outfit.is_cas_part_loaded(
                        underwear_data[1]):
                underwear_data[1] = DEFAULT_UNDERWEAR_BOTTOM_MALE
        else:
            if underwear_data[
                    0] == -1 or not TurboCASUtil.Outfit.is_cas_part_loaded(
                        underwear_data[0]):
                underwear_data[0] = DEFAULT_UNDERWEAR_TOP_FEMALE
            if underwear_data[
                    1] == -1 or not TurboCASUtil.Outfit.is_cas_part_loaded(
                        underwear_data[1]):
                underwear_data[1] = DEFAULT_UNDERWEAR_BOTTOM_FEMALE
    set_sim_underwear_data(sim_info, underwear_data, outfit_category_and_index)
    return underwear_data
Пример #4
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_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_top=strip_type_top,
                  strip_type_bottom=strip_type_bottom)
     set_sim_top_naked_state(target, strip_type_top == StripType.NUDE)
     set_sim_top_underwear_state(target, strip_type_top != StripType.NUDE)
     set_sim_bottom_naked_state(target, strip_type_bottom == StripType.NUDE)
     set_sim_bottom_underwear_state(target,
                                    strip_type_bottom != StripType.NUDE)
     return True
def _update_dress_up_after_breast_feeding_on_game_update():
    if not get_nudity_setting(NuditySetting.BREAST_FEEDING_UNDRESS_STATE,
                              variable_type=bool):
        return
    for sim in TurboManagerUtil.Sim.get_all_sim_instance_gen(humans=True,
                                                             pets=False):
        if sim_ev(
                sim
        ).on_breast_feeding_outfit_state == OutfitStateBeforeBreastFeeding.NONE:
            continue
        if TurboSimUtil.Age.is_younger_than(sim, TurboSimUtil.Age.CHILD):
            continue
        if TurboSimUtil.Interaction.is_running_interaction(
                sim, BREAST_FEEDING_INTERACTIONS):
            return
        current_outfit = TurboSimUtil.CAS.get_current_outfit(sim)
        if not (current_outfit[0] == TurboCASUtil.OutfitCategory.SPECIAL
                and current_outfit[1] == 0):
            continue
        current_outfit = get_modified_outfit(sim)
        if sim_ev(
                sim
        ).on_breast_feeding_outfit_state == OutfitStateBeforeBreastFeeding.UNDERWEAR:
            set_bodytype_caspart(
                sim, (TurboCASUtil.OutfitCategory.SPECIAL, 0), 6,
                get_sim_underwear_data(sim, current_outfit)[0])
            set_sim_top_underwear_state(sim, True)
            try:
                TurboSimUtil.CAS.refresh_outfit(sim)
            except:
                continue
        elif sim_ev(
                sim
        ).on_breast_feeding_outfit_state == OutfitStateBeforeBreastFeeding.OUTFIT and has_sim_outfit_top(
                sim, outfit_category_and_index=current_outfit):
            part_id = get_sim_outfit_cas_part_from_bodytype(
                sim, 6, outfit_category_and_index=current_outfit)
            set_bodytype_caspart(sim, (TurboCASUtil.OutfitCategory.SPECIAL, 0),
                                 6, part_id)
            set_sim_top_underwear_state(sim, True)
            try:
                TurboSimUtil.CAS.refresh_outfit(sim)
            except:
                continue
        elif is_sim_outfit_fullbody(sim,
                                    outfit_category_and_index=current_outfit):
            dress_up_outfit(sim)
        else:
            dress_up_outfit(sim)
        sim_ev(sim).on_breast_feeding_outfit_state = int(
            OutfitStateBeforeBreastFeeding.NONE)
Пример #6
0
def _get_sim_body_state(sim_identifier, bodytype, outfit_category_and_index=None):
    sim_info = TurboManagerUtil.Sim.get_sim_info(sim_identifier)
    part_id = get_sim_outfit_cas_part_from_bodytype(sim_info, bodytype, outfit_category_and_index=outfit_category_and_index)
    nude_part_id = sim_ev(sim_info).nude_outfit_parts[bodytype] if bodytype in sim_ev(sim_info).nude_outfit_parts else -1
    if part_id == nude_part_id and nude_part_id != -1:
        return BodyState.NUDE
    if bodytype == 7 and part_id != -1 and part_id in get_penis_part_ids():
        return BodyState.NUDE
    if bodytype == 6 or bodytype == 7:
        current_outfit_category_and_index = get_modified_outfit(sim_info)
        from wickedwhims.nudity.underwear.operator import get_sim_underwear_data
        underwear_data = get_sim_underwear_data(sim_info, current_outfit_category_and_index)
        if part_id != -1 and part_id == underwear_data[0 if bodytype == 6 else 1]:
            return BodyState.UNDERWEAR
    return BodyState.OUTFIT
Пример #7
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)
Пример #8
0
 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
Пример #9
0
def _update_dress_up_after_toilet_use_on_game_update():
    global HAS_SIMS_USING_TOILET
    if not get_nudity_setting(NuditySetting.TOILET_USE_UNDRESS_STATE, variable_type=bool):
        return
    if HAS_SIMS_USING_TOILET is False:
        return
    has_sims_peeing = False
    for sim in TurboManagerUtil.Sim.get_all_sim_instance_gen(humans=True, pets=False):
        if sim_ev(sim).on_toilet_outfit_state == OutfitStateBeforeToiletUse.NONE:
            continue
        has_sims_peeing = True
        if TurboSimUtil.Age.is_younger_than(sim, TurboSimUtil.Age.CHILD):
            continue
        is_using_toilet = False
        for affordance_id in TOILET_USE_INTERACTIONS:
            if TurboSimUtil.Interaction.is_running_interaction(sim, affordance_id):
                is_using_toilet = True
                break
        if is_using_toilet is True:
            has_sims_peeing = True
        current_outfit = TurboSimUtil.CAS.get_current_outfit(sim)
        if not (current_outfit[0] == TurboCASUtil.OutfitCategory.SPECIAL and current_outfit[1] == 0):
            continue
        current_outfit = get_modified_outfit(sim)
        if sim_ev(sim).on_toilet_outfit_state == OutfitStateBeforeToiletUse.UNDERWEAR:
            set_bodytype_caspart(sim, (TurboCASUtil.OutfitCategory.SPECIAL, 0), TurboCASUtil.BodyType.LOWER_BODY, get_sim_underwear_data(sim, current_outfit)[1])
            set_sim_bottom_underwear_state(sim, True)
            try:
                TurboSimUtil.CAS.refresh_outfit(sim)
            except:
                continue
        elif sim_ev(sim).on_toilet_outfit_state == OutfitStateBeforeToiletUse.OUTFIT and has_sim_outfit_bottom(sim, outfit_category_and_index=current_outfit):
            set_bodytype_caspart(sim, (TurboCASUtil.OutfitCategory.SPECIAL, 0), TurboCASUtil.BodyType.LOWER_BODY, get_sim_outfit_cas_part_from_bodytype(sim, TurboCASUtil.BodyType.LOWER_BODY, outfit_category_and_index=current_outfit))
            set_bodytype_caspart(sim, (TurboCASUtil.OutfitCategory.SPECIAL, 0), TurboCASUtil.BodyType.TIGHTS, get_sim_outfit_cas_part_from_bodytype(sim, TurboCASUtil.BodyType.TIGHTS, outfit_category_and_index=current_outfit))
            set_bodytype_caspart(sim, (TurboCASUtil.OutfitCategory.SPECIAL, 0), TurboCASUtil.BodyType.SOCKS, get_sim_outfit_cas_part_from_bodytype(sim, TurboCASUtil.BodyType.SOCKS, outfit_category_and_index=current_outfit))
            set_sim_bottom_underwear_state(sim, True)
            try:
                TurboSimUtil.CAS.refresh_outfit(sim)
            except:
                continue
        elif is_sim_outfit_fullbody(sim, outfit_category_and_index=current_outfit):
            dress_up_outfit(sim)
        else:
            dress_up_outfit(sim)
        sim_ev(sim).on_toilet_outfit_state = int(OutfitStateBeforeToiletUse.NONE)
    if has_sims_peeing is False:
        HAS_SIMS_USING_TOILET = False
Пример #10
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)
Пример #11
0
 def on_interaction_start(cls, interaction_instance):
     sim = cls.get_interaction_target(interaction_instance)
     basic_debug_info = ''
     sim_position = TurboSimUtil.Location.get_position(sim)
     basic_debug_info += 'X: ' + str(sim_position.x) + '\n'
     basic_debug_info += 'Y: ' + str(sim_position.y) + '\n'
     basic_debug_info += 'Z: ' + str(sim_position.z) + '\n'
     basic_debug_info += '\nMale Gender Pref: ' + str(
         TurboSimUtil.Gender.get_gender_preference(
             sim, TurboSimUtil.Gender.MALE)) + '\n'
     basic_debug_info += 'Female Gender Pref: ' + str(
         TurboSimUtil.Gender.get_gender_preference(
             sim, TurboSimUtil.Gender.FEMALE)) + '\n'
     basic_debug_info += '\nCurrent Occult: ' + str(
         TurboSimUtil.Occult.get_current_occult_type(sim).name) + '\n'
     basic_debug_info += 'Occults List: ' + str([
         str(occult.name)
         for occult in TurboSimUtil.Occult.get_occult_types(sim)
     ])[1:-1] + '\n'
     if TurboSimUtil.Component.has_component(
             sim, TurboComponentUtil.ComponentType.BUFF):
         basic_debug_info += '\nActive Buffs: ' + str([
             str(buff.__class__.__name__)
             for buff in TurboSimUtil.Buff.get_all_buffs_gen(sim)
         ])[1:-1] + '\n'
     basic_debug_info += '\nTraits: ' + str([
         str(trait.__name__)
         for trait in TurboSimUtil.Trait.get_all_traits_gen(sim)
     ])[1:-1] + '\n'
     basic_debug_info += '\nActive Situations: ' + str([
         str(
             SimSituation(
                 TurboResourceUtil.Resource.get_guid64(situation)).name)
         for situation in TurboSimUtil.Situation.get_active_situations(sim)
     ])[1:-1] + '\n'
     basic_debug_info += '\nRunning Interactions: ' + str(
         TurboSimUtil.Interaction.get_running_interactions_ids(
             sim))[1:-1] + '\n'
     basic_debug_info += '\nQueued Interactions: ' + str(
         TurboSimUtil.Interaction.get_queued_interactions_ids(
             sim))[1:-1] + '\n'
     native_current_outfit = TurboSimUtil.CAS.get_current_outfit(sim)
     modified_current_outfit = get_modified_outfit(sim)
     saved_current_outfit = (sim_ev(sim).current_outfit_category,
                             sim_ev(sim).current_outfit_index)
     saved_previous_outfit = get_previous_modified_outfit(sim)
     basic_debug_info += '\nNative Current Outfit: ' + str(
         TurboCASUtil.OutfitCategory.get_outfit_category(
             native_current_outfit[0]).name) + ', ' + str(
                 native_current_outfit[1]) + '\n'
     basic_debug_info += 'Modified Current Outfit: ' + str(
         TurboCASUtil.OutfitCategory.get_outfit_category(
             modified_current_outfit[0]).name) + ', ' + str(
                 modified_current_outfit[1]) + '\n'
     basic_debug_info += 'Saved Current Outfit: ' + str(
         TurboCASUtil.OutfitCategory.get_outfit_category(
             saved_current_outfit[0]).name) + ', ' + str(
                 saved_current_outfit[1]) + '\n'
     basic_debug_info += 'Saved Previous Outfit: ' + str(
         TurboCASUtil.OutfitCategory.get_outfit_category(
             saved_previous_outfit[0]).name) + ', ' + str(
                 saved_previous_outfit[1]) + '\n'
     basic_debug_info += '\nMotives Data:\n'
     basic_debug_info += '  Hunger: ' + str(
         get_sim_motive_value(sim, SimMotive.HUNGER)) + '\n'
     basic_debug_info += '  Energy: ' + str(
         get_sim_motive_value(sim, SimMotive.ENERGY)) + '\n'
     basic_debug_info += '  Bladder: ' + str(
         get_sim_motive_value(sim, SimMotive.BLADDER)) + '\n'
     basic_debug_info += '  Fun: ' + str(
         get_sim_motive_value(sim, SimMotive.FUN)) + '\n'
     basic_debug_info += '  Hygiene: ' + str(
         get_sim_motive_value(sim, SimMotive.HYGIENE)) + '\n'
     basic_debug_info += '  Social: ' + str(
         get_sim_motive_value(sim, SimMotive.SOCIAL)) + '\n'
     basic_debug_info += '  Vampire Power: ' + str(
         get_sim_motive_value(sim, SimMotive.VAMPIRE_POWER)) + '\n'
     basic_debug_info += '  Vampire Thirst: ' + str(
         get_sim_motive_value(sim, SimMotive.VAMPIRE_THIRST)) + '\n'
     basic_debug_info += '  PlantSim Water: ' + str(
         get_sim_motive_value(sim, SimMotive.PLANTSIM_WATER)) + '\n'
     basic_debug_info += 'Is Leaving Lot: ' + str(
         TurboSimUtil.Spawner.is_leaving(sim)) + '\n'
     display_notification(text=basic_debug_info,
                          title=str(TurboSimUtil.Name.get_name(sim)[0]) +
                          ' ' + str(TurboSimUtil.Name.get_name(sim)[1]) +
                          ' General Debug',
                          secondary_icon=sim)
Пример #12
0
 def on_building_basic_elements(cls, interaction_instance, sequence):
     sim = cls.get_interaction_sim(interaction_instance)
     if get_nudity_setting(
             NuditySetting.COMPLETE_UNDRESSING_TYPE,
             variable_type=int) == CompleteUndressingTypeSetting.DEFAULT:
         reset_sim_bathing_outfits(sim)
         strip_result = copy_outfit_to_special(
             sim,
             set_special_outfit=False,
             outfit_category_and_index=(TurboCASUtil.OutfitCategory.BATHING,
                                        0),
             override_outfit_parts={
                 115: sim_ev(sim).nude_outfit_parts[115]
             })
     else:
         strip_result = copy_outfit_to_special(
             sim,
             set_special_outfit=False,
             outfit_category_and_index=get_modified_outfit(sim),
             override_outfit_parts={
                 TurboCASUtil.BodyType.UPPER_BODY:
                 sim_ev(sim).nude_outfit_parts[
                     TurboCASUtil.BodyType.UPPER_BODY],
                 TurboCASUtil.BodyType.LOWER_BODY:
                 sim_ev(sim).nude_outfit_parts[
                     TurboCASUtil.BodyType.LOWER_BODY],
                 TurboCASUtil.BodyType.SHOES:
                 sim_ev(sim).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).nude_outfit_parts[115]
             })
     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=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,
             dirty_outfit=True)
Пример #13
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)