def update_body_frame(sim_info: SimInfo, masculine: bool) -> bool:
        """update_body_frame(sim_info, masculine)

        Update the Body Frame of a Sim.

        .. note:: Will only update Human Sims.

        :param sim_info: An instance of a Sim.
        :type sim_info: SimInfo
        :param masculine: If True, the Sim will get a Masculine frame.\
        If False, the Sim will get a Feminine frame.
        :type masculine: bool
        :return: True, if successful. False, if not.
        :rtype: bool
        """
        if sim_info is None:
            return False
        if not CommonSpeciesUtils.is_human(sim_info):
            return False
        if masculine:
            CommonTraitUtils.remove_trait(
                sim_info, CommonTraitId.GENDER_OPTIONS_FRAME_FEMININE)
            CommonTraitUtils.add_trait(
                sim_info, CommonTraitId.GENDER_OPTIONS_FRAME_MASCULINE)
        else:
            CommonTraitUtils.remove_trait(
                sim_info, CommonTraitId.GENDER_OPTIONS_FRAME_MASCULINE)
            CommonTraitUtils.add_trait(
                sim_info, CommonTraitId.GENDER_OPTIONS_FRAME_FEMININE)
        from sims4communitylib.events.sim.common_sim_event_dispatcher import CommonSimEventDispatcherService
        CommonSimEventDispatcherService(
        )._on_sim_change_gender_options_body_frame(sim_info)
        return True
    def can_impregnate(sim_info: SimInfo) -> bool:
        """can_impregnate(sim_info)

        Determine if a Sim can impregnate other sims.

        :param sim_info: The Sim being checked.
        :type sim_info: SimInfo
        :return: True, if they can. False, if they cannot.
        :rtype: bool
        """
        from sims4communitylib.utils.sims.common_trait_utils import CommonTraitUtils
        from sims4communitylib.enums.traits_enum import CommonTraitId
        if CommonSpeciesUtils.is_human(sim_info):
            if CommonTraitUtils.has_trait(
                    sim_info,
                    CommonTraitId.GENDER_OPTIONS_PREGNANCY_CAN_NOT_IMPREGNATE):
                return False
            return CommonTraitUtils.has_trait(
                sim_info,
                CommonTraitId.GENDER_OPTIONS_PREGNANCY_CAN_IMPREGNATE)
        elif CommonSpeciesUtils.is_pet(sim_info):
            if CommonTraitUtils.has_trait(
                    sim_info,
                    CommonTraitId.PREGNANCY_OPTIONS_PET_CAN_NOT_REPRODUCE):
                return False
            return CommonTraitUtils.has_trait(
                sim_info, CommonTraitId.PREGNANCY_OPTIONS_PET_CAN_REPRODUCE)
        return False
    def update_clothing_preference(sim_info: SimInfo,
                                   prefer_menswear: bool) -> bool:
        """update_clothing_preference(sim_info, prefer_menswear)

        Update the Clothing Preference of a Sim.

        .. note:: Will only update Human Sims.

        :param sim_info: An instance of a Sim.
        :type sim_info: SimInfo
        :param prefer_menswear: If True, the Sim will prefer Menswear.\
        If False, the Sim will prefer Womenswear.
        :type prefer_menswear: bool
        :return: True, if successful. False, if not.
        :rtype: bool
        """
        if sim_info is None:
            return False
        if not CommonSpeciesUtils.is_human(sim_info):
            return False
        if prefer_menswear:
            CommonTraitUtils.remove_trait(
                sim_info, CommonTraitId.GENDER_OPTIONS_CLOTHING_WOMENS_WEAR)
            CommonTraitUtils.add_trait(
                sim_info, CommonTraitId.GENDER_OPTIONS_CLOTHING_MENS_WEAR)
        else:
            CommonTraitUtils.remove_trait(
                sim_info, CommonTraitId.GENDER_OPTIONS_CLOTHING_MENS_WEAR)
            CommonTraitUtils.add_trait(
                sim_info, CommonTraitId.GENDER_OPTIONS_CLOTHING_WOMENS_WEAR)
        from sims4communitylib.events.sim.common_sim_event_dispatcher import CommonSimEventDispatcherService
        CommonSimEventDispatcherService(
        )._on_sim_change_gender_options_clothing_preference(sim_info)
        return True
    def update_toilet_usage(sim_info: SimInfo,
                            uses_toilet_standing: bool) -> bool:
        """update_toilet_usage(sim_info, uses_toilet_standing)

        Update how a Sim uses the toilet. i.e. Toilet Standing or Toilet Sitting.

        .. note:: Will only update Human Sims.

        :param sim_info: An instance of a Sim.
        :type sim_info: SimInfo
        :param uses_toilet_standing: If True, the Sim will use toilets while standing.\
        If False, the Sim will use toilets while sitting.
        :type uses_toilet_standing: bool
        :return: True, if successful. False, if not.
        :rtype: bool
        """
        if sim_info is None:
            return False
        if not CommonSpeciesUtils.is_human(sim_info):
            return False
        if uses_toilet_standing:
            CommonTraitUtils.remove_trait(
                sim_info, CommonTraitId.GENDER_OPTIONS_TOILET_SITTING)
            CommonTraitUtils.add_trait(
                sim_info, CommonTraitId.GENDER_OPTIONS_TOILET_STANDING)
        else:
            CommonTraitUtils.remove_trait(
                sim_info, CommonTraitId.GENDER_OPTIONS_TOILET_STANDING)
            CommonTraitUtils.add_trait(
                sim_info, CommonTraitId.GENDER_OPTIONS_TOILET_SITTING)
        from sims4communitylib.events.sim.common_sim_event_dispatcher import CommonSimEventDispatcherService
        CommonSimEventDispatcherService(
        )._on_sim_change_gender_options_toilet_usage(sim_info)
        return True
 def _try_apply_traits(self, sim_info: SimInfo):
     if CommonSpeciesUtils.is_human(sim_info):
         CommonTraitUtils.remove_trait(
             sim_info, S4CMTraitId.S4CM_CONTROLLABLE_LARGE_DOG_SIM,
             S4CMTraitId.S4CM_CONTROLLABLE_SMALL_DOG_SIM,
             S4CMTraitId.S4CM_CONTROLLABLE_CAT_SIM,
             S4CMTraitId.S4CM_CONTROLLABLE_FOX_SIM)
         if CommonTraitUtils.has_trait(
                 sim_info, S4CMTraitId.S4CM_CONTROLLABLE_HUMAN_SIM):
             return
         CommonTraitUtils.add_trait(sim_info,
                                    S4CMTraitId.S4CM_CONTROLLABLE_HUMAN_SIM)
     elif CommonSpeciesUtils.is_large_dog(sim_info):
         CommonTraitUtils.remove_trait(
             sim_info, S4CMTraitId.S4CM_CONTROLLABLE_HUMAN_SIM,
             S4CMTraitId.S4CM_CONTROLLABLE_SMALL_DOG_SIM,
             S4CMTraitId.S4CM_CONTROLLABLE_CAT_SIM,
             S4CMTraitId.S4CM_CONTROLLABLE_FOX_SIM)
         if CommonTraitUtils.has_trait(
                 sim_info, S4CMTraitId.S4CM_CONTROLLABLE_LARGE_DOG_SIM):
             return
         CommonTraitUtils.add_trait(
             sim_info, S4CMTraitId.S4CM_CONTROLLABLE_LARGE_DOG_SIM)
     elif CommonSpeciesUtils.is_small_dog(sim_info):
         CommonTraitUtils.remove_trait(
             sim_info, S4CMTraitId.S4CM_CONTROLLABLE_HUMAN_SIM,
             S4CMTraitId.S4CM_CONTROLLABLE_LARGE_DOG_SIM,
             S4CMTraitId.S4CM_CONTROLLABLE_CAT_SIM,
             S4CMTraitId.S4CM_CONTROLLABLE_FOX_SIM)
         if CommonTraitUtils.has_trait(
                 sim_info, S4CMTraitId.S4CM_CONTROLLABLE_SMALL_DOG_SIM):
             return
         CommonTraitUtils.add_trait(
             sim_info, S4CMTraitId.S4CM_CONTROLLABLE_SMALL_DOG_SIM)
     elif CommonSpeciesUtils.is_cat(sim_info):
         CommonTraitUtils.remove_trait(
             sim_info, S4CMTraitId.S4CM_CONTROLLABLE_HUMAN_SIM,
             S4CMTraitId.S4CM_CONTROLLABLE_LARGE_DOG_SIM,
             S4CMTraitId.S4CM_CONTROLLABLE_SMALL_DOG_SIM,
             S4CMTraitId.S4CM_CONTROLLABLE_FOX_SIM)
         if CommonTraitUtils.has_trait(
                 sim_info, S4CMTraitId.S4CM_CONTROLLABLE_CAT_SIM):
             return
         CommonTraitUtils.add_trait(sim_info,
                                    S4CMTraitId.S4CM_CONTROLLABLE_CAT_SIM)
     elif CommonSpeciesUtils.is_fox(sim_info):
         CommonTraitUtils.remove_trait(
             sim_info, S4CMTraitId.S4CM_CONTROLLABLE_HUMAN_SIM,
             S4CMTraitId.S4CM_CONTROLLABLE_LARGE_DOG_SIM,
             S4CMTraitId.S4CM_CONTROLLABLE_SMALL_DOG_SIM,
             S4CMTraitId.S4CM_CONTROLLABLE_CAT_SIM)
         if CommonTraitUtils.has_trait(
                 sim_info, S4CMTraitId.S4CM_CONTROLLABLE_FOX_SIM):
             return
         CommonTraitUtils.add_trait(sim_info,
                                    S4CMTraitId.S4CM_CONTROLLABLE_FOX_SIM)
Esempio n. 6
0
 def get_bowels_level(sim_info: SimInfo) -> float:
     """ Retrieve the bowels level of a Sim. """
     if CommonSpeciesUtils.is_human(sim_info):
         return -1.0
     elif CommonSpeciesUtils.is_dog(sim_info):
         return CommonSimMotiveUtils._get_motive_level(
             sim_info, CommonMotiveId.PET_DOG_BOWEL)
     elif CommonSpeciesUtils.is_cat(sim_info):
         return CommonSimMotiveUtils._get_motive_level(
             sim_info, CommonMotiveId.PET_CAT_BOWEL)
     return -1.0
Esempio n. 7
0
    def is_baby_toddler_or_child_human(sim_info: SimInfo) -> bool:
        """is_baby_toddler_or_child_human(sim_info)

        Determine if a sim is a Baby, Toddler, or Child Human.

        :param sim_info: The Sim to check.
        :type sim_info: SimInfo
        :return: True, if the Sim is a Baby, Toddler, or Child Human. False, if the Sim is not.
        :rtype: bool
        """
        return CommonAgeUtils.is_baby_toddler_or_child(
            sim_info) and CommonSpeciesUtils.is_human(sim_info)
Esempio n. 8
0
 def get_species(sim_info: SimInfo) -> int:
     """ Retrieve the CommonSpecies of a sim. Use this instead of CommonSpeciesUtils.get_species to determine a more specific species. """
     from sims4communitylib.utils.sims.common_species_utils import CommonSpeciesUtils
     if CommonSpeciesUtils.is_human(sim_info):
         return CommonSpecies.HUMAN
     elif CommonSpeciesUtils.is_small_dog(sim_info):
         return CommonSpecies.SMALL_DOG
     elif CommonSpeciesUtils.is_large_dog(sim_info):
         return CommonSpecies.LARGE_DOG
     elif CommonSpeciesUtils.is_cat(sim_info):
         return CommonSpecies.CAT
     return CommonSpecies.INVALID
Esempio n. 9
0
    def is_teen_adult_or_elder_human(sim_info: SimInfo) -> bool:
        """is_teen_adult_or_elder_human(sim_info)

        Determine if a sim is a Teen, Young Adult, Adult, or Elder Human.

        :param sim_info: The Sim to check.
        :type sim_info: SimInfo
        :return: True, if the Sim is a Teen, Young Adult, Adult, or Elder Human. False, if the Sim is not.
        :rtype: bool
        """
        return CommonAgeUtils.is_teen_adult_or_elder(
            sim_info) and CommonSpeciesUtils.is_human(sim_info)
Esempio n. 10
0
    def is_mature_adult_human(sim_info: SimInfo) -> bool:
        """is_mature_adult_human(sim_info)

        Determine if a sim is an Adult Human.

        :param sim_info: The Sim to check.
        :type sim_info: SimInfo
        :return: True, if the Sim is an Adult Human. False, if the Sim is not.
        :rtype: bool
        """
        return CommonAgeUtils.is_mature_adult(
            sim_info) and CommonSpeciesUtils.is_human(sim_info)
Esempio n. 11
0
    def is_child_or_teen_human(sim_info: SimInfo) -> bool:
        """is_child_or_teen_human(sim_info)

        Determine if a sim is a Child or Teen Human.

        :param sim_info: The Sim to check.
        :type sim_info: SimInfo
        :return: True, if the Sim is a Child or Teen Human. False, if the Sim is not.
        :rtype: bool
        """
        return CommonAgeUtils.is_child_or_teen(
            sim_info) and CommonSpeciesUtils.is_human(sim_info)
    def get_bowels_level(sim_info: SimInfo) -> float:
        """get_bowels_level(sim_info)

        Retrieve the bowel level of a Sim.

        .. note:: Human Sims do not have Bowels. (As hard as that is to believe)

        :param sim_info: The Sim to get the level of.
        :type sim_info: SimInfo
        :return: The current level of the Motive of the Sim.
        :rtype: float
        """
        if CommonSpeciesUtils.is_human(sim_info):
            return -1.0
        return CommonSimMotiveUtils._get_motive_level(sim_info,
                                                      CommonMotiveId.BOWEL)
    def get_bowels_level(sim_info: SimInfo) -> float:
        """get_bowels_level(sim_info)

        Retrieve the bowels level of a Sim.

        :param sim_info: The Sim to get the level of.
        :type sim_info: SimInfo
        :return: The current level of the Motive of the Sim.
        :rtype: float
        """
        if CommonSpeciesUtils.is_human(sim_info):
            return -1.0
        elif CommonSpeciesUtils.is_dog(sim_info):
            return CommonSimMotiveUtils._get_motive_level(sim_info, CommonMotiveId.PET_DOG_BOWEL)
        elif CommonSpeciesUtils.is_cat(sim_info):
            return CommonSimMotiveUtils._get_motive_level(sim_info, CommonMotiveId.PET_CAT_BOWEL)
        return -1.0
    def get_stand_interaction(sim_info: SimInfo) -> Union[int, None]:
        """get_stand_interaction(sim_info)

        Retrieve a Stand interaction appropriate for a Sim.

        :param sim_info: An instance of a Sim.
        :type sim_info: SimInfo
        :return: The decimal identifier of a Stand interaction appropriate for the Sim or None if no Stand interaction was found to be appropriate.
        :rtype: Union[int, None]
        """
        from sims4communitylib.utils.sims.common_species_utils import CommonSpeciesUtils
        if CommonSpeciesUtils.is_human(sim_info):
            return CommonInteractionId.SIM_STAND
        elif CommonSpeciesUtils.is_dog(sim_info):
            return CommonInteractionId.DOG_STAND
        elif CommonSpeciesUtils.is_cat(sim_info):
            return CommonInteractionId.CAT_STAND
        return None
    def get_swim_interaction(sim_info: SimInfo) -> Union[int, None]:
        """get_swim_interaction(sim_info)

        Retrieve a Swim interaction appropriate for a Sim.

        .. note:: Cats do not have an appropriate Swim interaction.

        :param sim_info: An instance of a Sim.
        :type sim_info: SimInfo
        :return: The decimal identifier of an interaction appropriate for the Sim or None if no interaction was found to be appropriate.
        :rtype: Union[int, None]
        """
        if CommonSpeciesUtils.is_human(sim_info):
            return CommonInteractionId.SIM_SWIM
        elif CommonSpeciesUtils.is_dog(sim_info):
            return CommonInteractionId.DOG_SWIM
        # Cats don't have a swim interaction.
        return None
Esempio n. 16
0
 def can_impregnate(sim_info: SimInfo) -> bool:
     """ Determine if a Sim can impregnate other sims. """
     from sims4communitylib.utils.sims.common_trait_utils import CommonTraitUtils
     from sims4communitylib.enums.traits_enum import CommonTraitId
     if CommonSpeciesUtils.is_human(sim_info):
         if CommonTraitUtils.has_trait(
                 sim_info,
                 CommonTraitId.GENDER_OPTIONS_PREGNANCY_CAN_NOT_IMPREGNATE):
             return False
         return CommonTraitUtils.has_trait(
             sim_info,
             CommonTraitId.GENDER_OPTIONS_PREGNANCY_CAN_IMPREGNATE)
     elif CommonSpeciesUtils.is_pet(sim_info):
         if CommonTraitUtils.has_trait(
                 sim_info,
                 CommonTraitId.PREGNANCY_OPTIONS_PET_CAN_NOT_REPRODUCE):
             return False
         return CommonTraitUtils.has_trait(
             sim_info, CommonTraitId.PREGNANCY_OPTIONS_PET_CAN_REPRODUCE)
     return False
    def get_species(sim_info: SimInfo) -> 'CommonSpecies':
        """get_species(sim_info)

        Retrieve the CommonSpecies of a sim. Use this instead of CommonSpeciesUtils.get_species to determine a more specific species.

        :param sim_info: An instance of a Sim.
        :type sim_info: SimInfo
        :return: A species matching the Sim or CommonSpecies.INVALID if no matching species is found.
        :rtype: CommonSpecies
        """
        from sims4communitylib.utils.sims.common_species_utils import CommonSpeciesUtils
        if CommonSpeciesUtils.is_human(sim_info):
            return CommonSpecies.HUMAN
        elif CommonSpeciesUtils.is_small_dog(sim_info):
            return CommonSpecies.SMALL_DOG
        elif CommonSpeciesUtils.is_large_dog(sim_info):
            return CommonSpecies.LARGE_DOG
        elif CommonSpeciesUtils.is_cat(sim_info):
            return CommonSpecies.CAT
        return CommonSpecies.INVALID
 def _try_apply_traits(self, sim_info: SimInfo):
     if CommonSpeciesUtils.is_human(sim_info):
         CommonTraitUtils.remove_trait(
             sim_info, CommonTraitId.S4CL_MAIN_TRAIT_LARGE_DOG,
             CommonTraitId.S4CL_MAIN_TRAIT_SMALL_DOG,
             CommonTraitId.S4CL_MAIN_TRAIT_CAT)
         if CommonTraitUtils.has_trait(sim_info,
                                       CommonTraitId.S4CL_MAIN_TRAIT_HUMAN):
             return
         CommonTraitUtils.add_trait(sim_info,
                                    CommonTraitId.S4CL_MAIN_TRAIT_HUMAN)
     elif CommonSpeciesUtils.is_large_dog(sim_info):
         CommonTraitUtils.remove_trait(
             sim_info, CommonTraitId.S4CL_MAIN_TRAIT_HUMAN,
             CommonTraitId.S4CL_MAIN_TRAIT_SMALL_DOG,
             CommonTraitId.S4CL_MAIN_TRAIT_CAT)
         if CommonTraitUtils.has_trait(
                 sim_info, CommonTraitId.S4CL_MAIN_TRAIT_LARGE_DOG):
             return
         CommonTraitUtils.add_trait(sim_info,
                                    CommonTraitId.S4CL_MAIN_TRAIT_LARGE_DOG)
     elif CommonSpeciesUtils.is_small_dog(sim_info):
         CommonTraitUtils.remove_trait(
             sim_info, CommonTraitId.S4CL_MAIN_TRAIT_HUMAN,
             CommonTraitId.S4CL_MAIN_TRAIT_LARGE_DOG,
             CommonTraitId.S4CL_MAIN_TRAIT_CAT)
         if CommonTraitUtils.has_trait(
                 sim_info, CommonTraitId.S4CL_MAIN_TRAIT_SMALL_DOG):
             return
         CommonTraitUtils.add_trait(sim_info,
                                    CommonTraitId.S4CL_MAIN_TRAIT_SMALL_DOG)
     elif CommonSpeciesUtils.is_cat(sim_info):
         CommonTraitUtils.remove_trait(
             sim_info, CommonTraitId.S4CL_MAIN_TRAIT_HUMAN,
             CommonTraitId.S4CL_MAIN_TRAIT_LARGE_DOG,
             CommonTraitId.S4CL_MAIN_TRAIT_SMALL_DOG)
         if CommonTraitUtils.has_trait(sim_info,
                                       CommonTraitId.S4CL_MAIN_TRAIT_CAT):
             return
         CommonTraitUtils.add_trait(sim_info,
                                    CommonTraitId.S4CL_MAIN_TRAIT_CAT)
    def update_can_be_impregnated(sim_info: SimInfo,
                                  can_be_impregnated: bool) -> bool:
        """update_can_be_impregnated(sim_info, can_be_impregnated)

        Update a Sims ability to be impregnated by other Sims.

        .. note:: Will only update Human Sims.

        :param sim_info: An instance of a Sim.
        :type sim_info: SimInfo
        :param can_be_impregnated: If True, the Sim will have the ability to be impregnated.\
        If False, the Sim will not have the ability to be impregnated.
        :type can_be_impregnated: bool
        :return: True, if successful. False, if not.
        :rtype: bool
        """
        if sim_info is None:
            return False
        if not CommonSpeciesUtils.is_human(sim_info):
            return False
        if can_be_impregnated:
            CommonTraitUtils.remove_trait(
                sim_info,
                CommonTraitId.GENDER_OPTIONS_PREGNANCY_CAN_NOT_BE_IMPREGNATED)
            CommonTraitUtils.add_trait(
                sim_info,
                CommonTraitId.GENDER_OPTIONS_PREGNANCY_CAN_BE_IMPREGNATED)
        else:
            CommonTraitUtils.remove_trait(
                sim_info,
                CommonTraitId.GENDER_OPTIONS_PREGNANCY_CAN_BE_IMPREGNATED)
            CommonTraitUtils.add_trait(
                sim_info,
                CommonTraitId.GENDER_OPTIONS_PREGNANCY_CAN_NOT_BE_IMPREGNATED)
        from sims4communitylib.events.sim.common_sim_event_dispatcher import CommonSimEventDispatcherService
        CommonSimEventDispatcherService(
        )._on_sim_change_gender_options_can_be_impregnated(sim_info)
        return True
    def get_in_labor_buff(sim_info: SimInfo) -> Union[int, CommonBuffId]:
        """get_in_labor_buff(sim_info)

        Retrieve an In Labor buff appropriate for causing the Sim to go into labor (Give Birth).

        :param sim_info: An instance of a Sim.
        :type sim_info: SimInfo
        :return: The decimal identifier of a Buff that will cause the specified Sim to go into labor. If no appropriate Buff is found, -1 will be returned.
        :rtype: Union[int, CommonBuffId]
        """
        from sims4communitylib.utils.sims.common_gender_utils import CommonGenderUtils
        sim_name = CommonSimNameUtils.get_full_name(sim_info)
        log.debug(
            'Locating appropriate Buff for inducing labor in \'{}\'.'.format(
                sim_name))
        is_female = CommonGenderUtils.is_female(sim_info)
        if CommonSpeciesUtils.is_human(sim_info):
            log.debug('\'{}\' is Human.'.format(sim_name))
            if is_female:
                log.debug('\'{}\' is Female.'.format(sim_name))
                return CommonBuffId.PREGNANCY_IN_LABOR
            else:
                log.debug('\'{}\' is Male.'.format(sim_name))
                return CommonBuffId.PREGNANCY_IN_LABOR_MALE
        elif CommonSpeciesUtils.is_dog(sim_info):
            log.debug('\'{}\' is a Dog.'.format(sim_name))
            if is_female:
                log.debug('\'{}\' is Female.'.format(sim_name))
                return CommonBuffId.PREGNANCY_IN_LABOR_PET_DOG
        elif CommonSpeciesUtils.is_cat(sim_info):
            log.debug('\'{}\' is a Cat.'.format(sim_name))
            if is_female:
                log.debug('\'{}\' is Female.'.format(sim_name))
                return CommonBuffId.PREGNANCY_IN_LABOR_PET_CAT
        log.debug(
            'No appropriate Buff located to induce labor in \'{}\'.'.format(
                sim_name))
        return -1
Esempio n. 21
0
 def is_adult_human(sim_info: SimInfo) -> bool:
     """
         Determine if a sim is a Young Adult or Adult Human.
     """
     return CommonAgeUtils.is_adult(sim_info) and CommonSpeciesUtils.is_human(sim_info)
Esempio n. 22
0
 def is_teen_adult_or_elder_human(sim_info: SimInfo) -> bool:
     """
         Determine if a sim is a Teen, Young Adult, Adult, or Elder Human.
     """
     return CommonAgeUtils.is_teen_adult_or_elder(sim_info) and CommonSpeciesUtils.is_human(sim_info)
Esempio n. 23
0
 def is_baby_human(sim_info: SimInfo) -> bool:
     """
         Determine if a sim is a Baby Human.
     """
     return CommonAgeUtils.is_baby(sim_info) and CommonSpeciesUtils.is_human(sim_info)
Esempio n. 24
0
 def _update_gender_options(self, sim_info: SimInfo):
     update_outfits = False
     if self._setting_utils.force_all_sims_to_male(
     ) and not CommonGenderUtils.is_male(sim_info):
         CommonGenderUtils.swap_gender(sim_info,
                                       update_gender_options=False)
         update_outfits = True
     elif self._setting_utils.force_all_sims_to_female(
     ) and not CommonGenderUtils.is_female(sim_info):
         CommonGenderUtils.swap_gender(sim_info,
                                       update_gender_options=False)
         update_outfits = True
     if CommonGenderUtils.is_male(sim_info):
         if CommonSpeciesUtils.is_pet(sim_info):
             if self._setting_utils.all_male_options.can_reproduce(
             ) and not CommonSimGenderOptionUtils.can_reproduce(sim_info):
                 CommonSimGenderOptionUtils.update_can_reproduce(
                     sim_info, True)
             if self._setting_utils.all_male_options.cannot_reproduce(
             ) and not CommonSimGenderOptionUtils.can_not_reproduce(
                     sim_info):
                 CommonSimGenderOptionUtils.update_can_reproduce(
                     sim_info, False)
         elif CommonSpeciesUtils.is_human(sim_info):
             if self._setting_utils.all_male_options.use_toilet_standing(
             ) and not CommonSimGenderOptionUtils.uses_toilet_standing(
                     sim_info):
                 CommonSimGenderOptionUtils.update_toilet_usage(
                     sim_info, True)
                 update_outfits = True
             if self._setting_utils.all_male_options.use_toilet_sitting(
             ) and not CommonSimGenderOptionUtils.uses_toilet_sitting(
                     sim_info):
                 CommonSimGenderOptionUtils.update_toilet_usage(
                     sim_info, False)
                 update_outfits = True
             if self._setting_utils.all_male_options.prefer_menswear(
             ) and not CommonSimGenderOptionUtils.prefers_menswear(
                     sim_info):
                 CommonSimGenderOptionUtils.update_clothing_preference(
                     sim_info, True)
             if self._setting_utils.all_male_options.prefer_womenswear(
             ) and not CommonSimGenderOptionUtils.prefers_womenswear(
                     sim_info):
                 CommonSimGenderOptionUtils.update_clothing_preference(
                     sim_info, False)
             if self._setting_utils.all_male_options.force_masculine_body_frame(
             ) and not CommonSimGenderOptionUtils.has_masculine_frame(
                     sim_info):
                 CommonSimGenderOptionUtils.update_body_frame(
                     sim_info, True)
             if self._setting_utils.all_male_options.force_feminine_body_frame(
             ) and not CommonSimGenderOptionUtils.has_feminine_frame(
                     sim_info):
                 CommonSimGenderOptionUtils.update_body_frame(
                     sim_info, False)
             if self._setting_utils.all_male_options.can_impregnate(
             ) and not CommonSimGenderOptionUtils.can_impregnate(sim_info):
                 CommonSimGenderOptionUtils.update_can_impregnate(
                     sim_info, True)
             if self._setting_utils.all_male_options.cannot_impregnate(
             ) and not CommonSimGenderOptionUtils.can_not_impregnate(
                     sim_info):
                 CommonSimGenderOptionUtils.update_can_impregnate(
                     sim_info, False)
             if self._setting_utils.all_male_options.can_be_impregnated(
             ) and not CommonSimGenderOptionUtils.can_be_impregnated(
                     sim_info):
                 CommonSimGenderOptionUtils.update_can_be_impregnated(
                     sim_info, True)
             if self._setting_utils.all_male_options.cannot_be_impregnated(
             ) and not CommonSimGenderOptionUtils.can_not_be_impregnated(
                     sim_info):
                 CommonSimGenderOptionUtils.update_can_be_impregnated(
                     sim_info, False)
             if self._setting_utils.all_male_options.force_breasts_on(
             ) and not CommonSimGenderOptionUtils.has_breasts(sim_info):
                 CommonSimGenderOptionUtils.update_has_breasts(
                     sim_info, True)
                 update_outfits = True
             if self._setting_utils.all_male_options.force_breasts_off(
             ) and CommonSimGenderOptionUtils.has_breasts(sim_info):
                 CommonSimGenderOptionUtils.update_has_breasts(
                     sim_info, False)
                 update_outfits = True
     elif CommonGenderUtils.is_female(sim_info):
         if CommonSpeciesUtils.is_pet(sim_info):
             if self._setting_utils.all_female_options.can_reproduce(
             ) and not CommonSimGenderOptionUtils.can_reproduce(sim_info):
                 CommonSimGenderOptionUtils.update_can_reproduce(
                     sim_info, True)
             if self._setting_utils.all_female_options.cannot_reproduce(
             ) and not CommonSimGenderOptionUtils.can_not_reproduce(
                     sim_info):
                 CommonSimGenderOptionUtils.update_can_reproduce(
                     sim_info, False)
         elif CommonSpeciesUtils.is_human(sim_info):
             if self._setting_utils.all_female_options.use_toilet_standing(
             ) and not CommonSimGenderOptionUtils.uses_toilet_standing(
                     sim_info):
                 CommonSimGenderOptionUtils.update_toilet_usage(
                     sim_info, True)
                 update_outfits = True
             if self._setting_utils.all_female_options.use_toilet_sitting(
             ) and not CommonSimGenderOptionUtils.uses_toilet_sitting(
                     sim_info):
                 CommonSimGenderOptionUtils.update_toilet_usage(
                     sim_info, False)
                 update_outfits = True
             if self._setting_utils.all_female_options.prefer_menswear(
             ) and not CommonSimGenderOptionUtils.prefers_menswear(
                     sim_info):
                 CommonSimGenderOptionUtils.update_clothing_preference(
                     sim_info, True)
             if self._setting_utils.all_female_options.prefer_womenswear(
             ) and not CommonSimGenderOptionUtils.prefers_womenswear(
                     sim_info):
                 CommonSimGenderOptionUtils.update_clothing_preference(
                     sim_info, False)
             if self._setting_utils.all_female_options.force_masculine_body_frame(
             ) and not CommonSimGenderOptionUtils.has_masculine_frame(
                     sim_info):
                 CommonSimGenderOptionUtils.update_body_frame(
                     sim_info, True)
             if self._setting_utils.all_female_options.force_feminine_body_frame(
             ) and not CommonSimGenderOptionUtils.has_feminine_frame(
                     sim_info):
                 CommonSimGenderOptionUtils.update_body_frame(
                     sim_info, False)
             if self._setting_utils.all_female_options.can_impregnate(
             ) and not CommonSimGenderOptionUtils.can_impregnate(sim_info):
                 CommonSimGenderOptionUtils.update_can_impregnate(
                     sim_info, True)
             if self._setting_utils.all_female_options.cannot_impregnate(
             ) and not CommonSimGenderOptionUtils.can_not_impregnate(
                     sim_info):
                 CommonSimGenderOptionUtils.update_can_impregnate(
                     sim_info, False)
             if self._setting_utils.all_female_options.can_be_impregnated(
             ) and not CommonSimGenderOptionUtils.can_be_impregnated(
                     sim_info):
                 CommonSimGenderOptionUtils.update_can_be_impregnated(
                     sim_info, True)
             if self._setting_utils.all_female_options.cannot_be_impregnated(
             ) and not CommonSimGenderOptionUtils.can_not_be_impregnated(
                     sim_info):
                 CommonSimGenderOptionUtils.update_can_be_impregnated(
                     sim_info, False)
             if self._setting_utils.all_female_options.force_breasts_on(
             ) and not CommonSimGenderOptionUtils.has_breasts(sim_info):
                 CommonSimGenderOptionUtils.update_has_breasts(
                     sim_info, True)
                 update_outfits = True
             if self._setting_utils.all_female_options.force_breasts_off(
             ) and CommonSimGenderOptionUtils.has_breasts(sim_info):
                 CommonSimGenderOptionUtils.update_has_breasts(
                     sim_info, False)
                 update_outfits = True
     if update_outfits:
         CommonOutfitUtils.update_outfits(sim_info)
Esempio n. 25
0
 def is_elder_human(sim_info: SimInfo) -> bool:
     """
         Determine if a sim is an Elder Human.
     """
     return CommonAgeUtils.is_elder(sim_info) and CommonSpeciesUtils.is_human(sim_info)
Esempio n. 26
0
 def is_baby_toddler_or_child_human(sim_info: SimInfo) -> bool:
     """
         Determine if a sim is a Baby, Toddler, or Child Human.
     """
     return CommonAgeUtils.is_baby_toddler_or_child(sim_info) and CommonSpeciesUtils.is_human(sim_info)
Esempio n. 27
0
 def is_child_or_teen_human(sim_info: SimInfo) -> bool:
     """
         Determine if a sim is a Child or Teen Human.
     """
     return CommonAgeUtils.is_child_or_teen(sim_info) and CommonSpeciesUtils.is_human(sim_info)
Esempio n. 28
0
 def is_enabled_for_interactions(self, sim_info: SimInfo) -> bool:
     """ Determine if a Sim is enabled for Custom Gender Setting interactions. """
     return CommonSpeciesUtils.is_human(sim_info) or CommonSpeciesUtils.is_pet(sim_info)
Esempio n. 29
0
 def is_baby_or_toddler_human(sim_info: SimInfo) -> bool:
     """
         Determine if a sim is a Baby or Toddler Human.
     """
     return CommonAgeUtils.is_baby_or_toddler(sim_info) and CommonSpeciesUtils.is_human(sim_info)
Esempio n. 30
0
 def _is_valid_sim(_sim_info: SimInfo) -> bool:
     return CommonSpeciesUtils.is_human(
         _sim_info) and not CommonAgeUtils.is_baby(_sim_info)