def GetLastSimID(targetSimInfo: sim_info.SimInfo) -> typing.Optional[int]: if not isinstance(targetSimInfo, sim_info.SimInfo): Exceptions.IncorrectTypeException(targetSimInfo, "targetSimInfo", (sim_info.SimInfo, )) lastSimIDStatisticType = services.get_instance_manager( resources.Types.STATISTIC).get( LastSimIDStatisticID, None) # type: typing.Optional[typing.Type[statistic.Statistic]] if lastSimIDStatisticType is None: Debug.Log( "Could not find the last sim id statistic type.\nTarget Sim ID: %s" % str(targetSimInfo.id), This.Mod.Namespace, Debug.LogLevels.Error, group=This.Mod.Namespace, owner=__name__, lockIdentifier=__name__ + ":MissingLastSimIDStatisticType") return None lastSimIDStatisticTracker = targetSimInfo.get_tracker( lastSimIDStatisticType ) # type: typing.Optional[statistic_tracker.StatisticTracker] if lastSimIDStatisticTracker is None: Debug.Log( "Could not find the last sim id statistic's tracker in the target sim.\nTarget Sim ID: %s" % str(targetSimInfo.id), This.Mod.Namespace, Debug.LogLevels.Error, group=This.Mod.Namespace, owner=__name__, lockIdentifier=__name__ + ":MissingLastSimIDStatisticTracker") return None lastSimIDStatistic = lastSimIDStatisticTracker.get_statistic( lastSimIDStatisticType, add=True) # type: typing.Optional[statistic.Statistic] if lastSimIDStatistic is None: Debug.Log( "Could not retrieve a sim's last sim id statistic\nTarget Sim ID: %s" % str(targetSimInfo.id), This.Mod.Namespace, Debug.LogLevels.Error, group=This.Mod.Namespace, owner=__name__, lockIdentifier=__name__ + ":MissingLastSimIDStatistic") return None lastSimID = lastSimIDStatistic.get_value() # type: int if lastSimID == 0: return None else: return lastSimID
def get_pregnancy_progress(sim_info: SimInfo) -> float: """ Retrieve the pregnancy progress of a Sim. """ pregnancy_tracker = CommonSimPregnancyUtils._get_pregnancy_tracker( sim_info) if pregnancy_tracker is None or not CommonSimPregnancyUtils.is_pregnant( sim_info): return 0.0 pregnancy_commodity_type = pregnancy_tracker.PREGNANCY_COMMODITY_MAP.get( CommonSpeciesUtils.get_species(sim_info)) statistic_tracker = sim_info.get_tracker(pregnancy_commodity_type) pregnancy_commodity = statistic_tracker.get_statistic( pregnancy_commodity_type, add=False) if not pregnancy_commodity: return 0.0 return pregnancy_commodity.get_value()