def makePetList(self): self.numPets = len(self.petSeeds) self.curPet = 0 self.petDNA = [] self.petName = [] self.petDesc = [] self.petCost = [] for i in xrange(self.numPets): random.seed(self.petSeeds[i]) zoneId = ZoneUtil.getCanonicalSafeZoneId(base.localAvatar.getZoneId()) name, dna, traitSeed = PetUtil.getPetInfoFromSeed(self.petSeeds[i], zoneId) cost = PetUtil.getPetCostFromSeed(self.petSeeds[i], zoneId) traits = PetTraits.PetTraits(traitSeed, zoneId) traitList = traits.getExtremeTraitDescriptions() numGenders = len(PetDNA.PetGenders) gender = i % numGenders PetDNA.setGender(dna, gender) self.petDNA.append(dna) self.petName.append(TTLocalizer.PetshopUnknownName) descList = [] descList.append(TTLocalizer.PetshopDescGender % PetDNA.getGenderString(gender=gender)) if traitList: descList.append(TTLocalizer.PetshopDescTrait % traitList[0]) else: descList.append(TTLocalizer.PetshopDescTrait % TTLocalizer.PetshopDescStandard) traitList.extend(['', '', '', '']) for trait in traitList[1:4]: descList.append('\t%s' % trait) descList.append(TTLocalizer.PetshopDescCost % cost) self.petDesc.append('\n'.join(descList)) self.petCost.append(cost)
def getPetInfoFromSeed(seed, safezoneId): S = random.getstate() random.seed(seed) dnaArray = PetDNA.getRandomPetDNA(safezoneId) gender = PetDNA.getGender(dnaArray) nameString = TTLocalizer.getRandomPetName(gender=gender, seed=seed) traitSeed = PythonUtil.randUint31() random.setstate(S) return (nameString, dnaArray, traitSeed)
def _initDBVals(self, ownerId, name = None, traitSeed = 0, dna = None, safeZone = ToontownGlobals.ToontownCentral): self.b_setOwnerId(ownerId) if name is None: name = 'pet%s' % self.doId self.b_setPetName(name) self.b_setTraitSeed(traitSeed) self.b_setSafeZone(safeZone) traits = PetTraits.PetTraits(traitSeed, safeZone) for traitName in PetTraits.getTraitNames(): setter = self.getSetterName(traitName, 'b_set') self.__dict__[setter](traits.getTraitValue(traitName)) self.traits = traits for component in PetMood.PetMood.Components: setterName = self.getSetterName(component, 'b_set') self.__dict__[setterName](0.0) if not dna: dna = PetDNA.getRandomPetDNA() self.setDNA(dna) self.b_setLastSeenTimestamp(self.getCurEpochTimestamp()) for component in PetMood.PetMood.Components: self.setMoodComponent(component, 0.0) self.b_setTrickAptitudes([]) return
def _initDBVals(self, ownerId, name=None, traitSeed=0, dna=None, safeZone=ToontownGlobals.ToontownCentral): self.b_setOwnerId(ownerId) if name is None: name = 'pet%s' % self.doId self.b_setPetName(name) self.b_setTraitSeed(traitSeed) self.b_setSafeZone(safeZone) traits = PetTraits.PetTraits(traitSeed, safeZone) for traitName in PetTraits.getTraitNames(): setter = self.getSetterName(traitName, 'b_set') self.__dict__[setter](traits.getTraitValue(traitName)) self.traits = traits for component in PetMood.PetMood.Components: setterName = self.getSetterName(component, 'b_set') self.__dict__[setterName](0.0) if not dna: dna = PetDNA.getRandomPetDNA() self.setDNA(dna) self.b_setLastSeenTimestamp(self.getCurEpochTimestamp()) for component in PetMood.PetMood.Components: self.setMoodComponent(component, 0.0) self.b_setTrickAptitudes([]) return
def getPetCostFromSeed(seed, safezoneId): name, dna, traitSeed = getPetInfoFromSeed(seed, safezoneId) traits = PetTraits.PetTraits(traitSeed, safezoneId) traitValue = traits.getOverallValue() traitValue -= 0.3 traitValue = max(0, traitValue) rarity = PetDNA.getRarity(dna) rarity *= 1.0 - traitValue rarity = pow(0.001, rarity) - 0.001 minCost, maxCost = PetConstants.ZoneToCostRange[safezoneId] cost = rarity * (maxCost - minCost) + minCost cost = int(cost) return cost
def getPicture(self, avatar): from src.toontown.pets import PetDNA, Pet pet = Pet.Pet(forGui=1) dna = avatar.getPetDNA() if dna == None: dna = PetDNA.getRandomPetDNA() pet.setDNA(dna) pet.setH(180) pet.setScale(1.25) model, ival = self.makeFrameModel(pet, 0) pet.setP(-40) track = PetTricks.getTrickIval(pet, self.trickId) name = 'petTrick-item-%s' % self.sequenceNumber CatalogPetTrickItem.sequenceNumber += 1 if track != None: track = Sequence(Sequence(track), ActorInterval(pet, 'neutral', duration=2), name=name) else: pet.animFSM.request('neutral') track = Sequence(Wait(4), name=name) self.petPicture = pet self.hasPicture = True return (model, track)
def makeRandomPet(self): dna = PetDNA.getRandomPetDNA() self.setDNA(dna)