def _translate_motive(self, sim_info: SimInfo, motive_name: str) -> int:
     if motive_name == CMMotive.BOWEL:
         if CommonSpeciesUtils.is_dog(sim_info):
             return CommonMotiveId.PET_DOG_BOWEL
         elif CommonSpeciesUtils.is_cat(sim_info):
             return CommonMotiveId.PET_CAT_BOWEL
         return -1
     else:
         return CMMotiveUtils._MOTIVE_MAPPINGS[motive_name]
 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)
Exemple #3
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
Exemple #4
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
    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_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 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