def enterCreateAvatar(self): dna = ToonDNA() dna.makeFromNetString(self.dna) colorString = TTLocalizer.NumToColor[dna.headColor] animalType = TTLocalizer.AnimalToSpecies[dna.getAnimal()] name = (' ').join((colorString, animalType)) if self.name != '': toonFields = { 'setName': (self.name, ), 'WishNameState': ('LOCKED', ), 'WishName': ('', ), 'setDNAString': (self.dna, ), 'setDISLid': (self.target, ), 'setNametagStyle': (100, ) } else: toonFields = { 'setName': (name, ), 'WishNameState': ('OPEN', ), 'WishName': ('', ), 'setDNAString': (self.dna, ), 'setDISLid': (self.target, ), 'setNametagStyle': (100, ) } self.gameServicesManager.air.dbInterface.createObject( self.gameServicesManager.air.dbId, self.gameServicesManager.air.dclassesByName['DistributedToonUD'], toonFields, self.__handleCreate)
def enterLoadHouse(self): dna = ToonDNA() dna.makeFromNetString(self.toon['setDNAString'][0]) gender = 1 if dna.getGender() == 'm' else 0 self.mgr.air.sendActivate(self.houseId, self.mgr.air.districtId, self.estate.zoneId, self.mgr.air.dclassesByName['DistributedHouseAI'], {'setHousePos': [self.houseIndex], 'setColor': [self.houseIndex], 'setName': [self.toon['setName'][0]], 'setAvatarId': [self.toon['ID']], 'setGender': [gender]}) self.acceptOnce('generate-%d' % self.houseId, self.__gotHouse)
def enterStart(self, dna, name, index): if index >= 6: self.demand('Kill', 'Invalid index specified!') return if not ToonDNA().isValidNetString(dna): self.demand('Kill', 'Invalid DNA specified!') return self.index = index self.dna = dna self.name = name self.demand('RetrieveAccount')
def enterStart(self, dna, index, skipTutorial): if index >= 7: self.demand('Kill', 'Invalid index (%d) specified!' % index) return if not ToonDNA().isValidNetString(dna): self.demand('Kill', 'Invalid DNA specified!') return self.index = index self.dna = dna self.skipTutorial = skipTutorial self.demand('RetrieveAccount')
def __handleAvatar(self, dclass, fields): if dclass != self.csm.air.dclassesByName['DistributedToonUD']: self.demand('Kill', "One of the account's avatars is invalid!") return if fields['WishNameState'][0] != 'OPEN': self.demand('Kill', 'Avatar is not in a namable state!') return self.dna = ToonDNA(fields['setDNAString'][0]) self.demand('JudgeName')
def requestPolarBearTransformation(self): avId = self.air.getAvatarIdFromSender() av = self.air.doId2do.get(avId) if not av: return if av.dna.getAnimal() == 'bear' and av.dna.headColor != 0: newDNA = ToonDNA() newDNA.makeFromNetString(av.getDNAString()) newDNA.headColor = 0 newDNA.armColor = 0 newDNA.legColor = 0 taskMgr.doMethodLater(1.0, lambda task: av.b_setDNAString(newDNA.makeNetString()), 'transform-%d' % avId) self.sendUpdate('doPolarBearTransformation', [avId])
def start(self, avDNA, avPosition): if avPosition >= 6: # TODO: Kill the connection return dna = ToonDNA() valid = dna.isValidNetString(avDNA) if not valid: # TODO: Kill the connection return self.avPosition = avPosition self.avDNA = avDNA self.__handleRetrieveAccount()
def requestTransformation(self): avId = self.air.getAvatarIdFromSender() av = self.air.doId2do.get(avId) if av is None: return if not hasattr(av, 'dna'): return if (av.dna.getAnimal() == 'bear') and (av.dna.headColor != 0x00): newDNA = ToonDNA() newDNA.makeFromNetString(av.getDNAString()) newDNA.headColor = 0x00 newDNA.armColor = 0x00 newDNA.legColor = 0x00 taskMgr.doMethodLater(1.0, lambda task: av.b_setDNAString(newDNA.makeNetString()), 'transform-%d' % avId) self.sendUpdate('doTransformation', [avId])
def __handleCreateAvatar(self): dna = ToonDNA() dna.makeFromNetString(self.avDNA) colorString = TTLocalizer.NumToColor[dna.headColor] animalType = TTLocalizer.AnimalToSpecies[dna.getAnimal()] name = ' '.join((colorString, animalType)) toonFields = {'setName': (name,), 'WishNameState': ('OPEN',), 'WishName': ('',), 'setDNAString': (self.avDNA,), 'setDISLid': (self.sender,)} self.loginManager.air.dbInterface.createObject(self.loginManager.air.dbId, self.loginManager.air.dclassesByName['DistributedToonUD'], toonFields, self.__handleToonCreated)
def createToon(self): self.toon = Toon() dna = ToonDNA() dna.newToonFromProperties(*self.toonInfo[self.DNA_INDEX]) self.toon.setDNA(dna) self.toon.pose(*self.toonInfo[self.POSE_INDEX]) self.toon.setScale(0.3) self.toon.setH(200) self.toon.getGeomNode().setDepthWrite(1) self.toon.getGeomNode().setDepthTest(1) self.toon.reparentTo(self)
def enterStart(self, dna, index): # First, perform some basic sanity checking. if index >= 6: # This index is invalid! Kill the connection. self.demand('Kill', 'Invalid index specified!') return if not ToonDNA().isValidNetString(dna): # This DNA string is invalid! Kill the connection. self.demand('Kill', 'Invalid DNA specified!') return # Store these values. self.index = index self.dna = dna # Now we can query their account. self.demand('RetrieveAccount')
def enterStart(self, dna, index, uber, tracks, pg): if index >= 6: self.demand('Kill', 'Invalid index specified!') return if not ToonDNA().isValidNetString(dna): self.demand('Kill', 'Invalid DNA specified!') return self.index = index self.dna = dna self.uber = uber self.pg = pg self.trackAccess = [0, 0, 0, 0, 1, 1, 0, 0] if pg == 1: self.trackAccess[tracks[0]] = 1 elif pg == 2: for track in tracks: self.trackAccess[track] = 1 self.demand('RetrieveAccount')
def requestBlackCatTransformation(self): if not self.air.newsManager.isHolidayRunning( ToontownGlobals.BLACK_CAT_DAY): return avId = self.air.getAvatarIdFromSender() av = self.air.doId2do.get(avId) if not av or av.getTutorialAck( ) or av.dna.getAnimal() != 'cat' or av.dna.headColor == 0x1a: return newDNA = ToonDNA() newDNA.makeFromNetString(av.getDNAString()) newDNA.updateToonProperties(armColor=26, legColor=26, headColor=26) taskMgr.doMethodLater( 1.0, lambda task: av.b_setDNAString(newDNA.makeNetString()), 'transform-%d' % avId) self.sendUpdateToAvatarId(avId, 'doBlackCatTransformation', [])
def enterStart(self, dna, name, index, tf, hood, trackChoice): # Basic sanity-checking: if index >= 6: self.demand('Kill', 'Invalid index specified!') return if not ToonDNA().isValidNetString(dna): self.demand('Kill', 'Invalid DNA specified!') return self.index = index self.dna = dna self.name = name self.tf = tf self.hood = hood self.trackChoice = trackChoice self.__pendingName = "" # Okay, we're good to go, let's query their account. self.demand('RetrieveAccount')
def requestBlackCatTransformation(self): avId = self.air.getAvatarIdFromSender() av = self.air.doId2do.get(avId) if not av: return if not simbase.air.wantHalloween and not simbase.air.holidayManager.isHolidayRunning( HALLOWEEN): return if av.dna.getAnimal() == 'cat' and av.dna.headColor != 0x1a: newDNA = ToonDNA() newDNA.makeFromNetString(av.getDNAString()) newDNA.headColor = 0x1a newDNA.armColor = 0x1a newDNA.legColor = 0x1a taskMgr.doMethodLater( 1.0, lambda task: av.b_setDNAString(newDNA.makeNetString()), 'transform-%d' % avId) self.sendUpdate('doBlackCatTransformation', [avId])
def enterStart(self, dna, index, uber, tracks, pg): # Basic sanity-checking: if index >= 6: self.demand('Kill', 'Invalid index specified!') return if not ToonDNA().isValidNetString(dna): self.demand('Kill', 'Invalid DNA specified!') return self.index = index self.dna = dna self.uber = uber self.pg = pg self.trackAccess = [0, 0, 0, 0, 1, 1, 0, 0] if pg == 1: self.trackAccess[tracks[0]] = 1 elif pg == 2: for track in tracks: self.trackAccess[track] = 1 # Okay, we're good to go, let's query their account. self.demand('RetrieveAccount')
def enterCreateAvatar(self): dna = ToonDNA() dna.makeFromNetString(self.dna) colorString = TTLocalizer.NumToColor[dna.headColor] animalType = TTLocalizer.AnimalToSpecies[dna.getAnimal()] name = ' '.join((colorString, animalType)) toonFields = { 'setName': (name,), 'WishNameState': ('OPEN',), 'WishName': ('',), 'setDNAString': (self.dna,), 'setDISLid': (self.target,), 'setUber': (self.uber,) } if self.pg > 0: if self.pg == 1: maxMoney = 50 maxCarry = 25 startingHood = 1000 prevZones = [2000] questLimit = 3 questTier = 4 if self.uber == 1: hp = 15 else: hp = 25 experience = [600, 800] elif self.pg == 2: maxMoney = 60 maxCarry = 30 startingHood = 5000 prevZones = [1000, 2000] questLimit = 3 questTier = 7 if self.uber == 1: hp = 15 elif self.uber == 2: hp = 25 else: hp = 34 experience = [1000, 2400] exp = Experience() for i, t in enumerate(self.trackAccess): if t: chosenExp = random.randint(experience[0], experience[1]) exp.setExp(i, chosenExp) toonFields['setExperience'] = (exp.makeNetString(),) toonFields['setMaxMoney'] = (maxMoney,) toonFields['setMaxCarry'] = (maxCarry,) toonFields['setTrackAccess'] = (self.trackAccess,) toonFields['setDefaultZone'] = (startingHood,) toonFields['setHoodsVisited'] = (prevZones + [startingHood],) toonFields['setZonesVisited'] = (prevZones + [startingHood],) toonFields['setTeleportAccess'] = (prevZones,) toonFields['setQuestCarryLimit'] = (questLimit,) toonFields['setRewardHistory'] = (questTier, []) toonFields['setHp'] = (hp,) toonFields['setMaxHp'] = (hp,) toonFields['setTutorialAck'] = (1,) self.csm.air.dbInterface.createObject( self.csm.air.dbId, self.csm.air.dclassesByName['DistributedToonUD'], toonFields, self.__handleCreate)
def enterCreateAvatar(self): dna = ToonDNA() dna.makeFromNetString(self.dna) dg = PyDatagram(self.name) dgi = PyDatagramIterator(dg) isPattern, name = isNamePattern(dgi, self.csm.namePattern, dna.gender) if not name: self.demand('Kill', 'There\'s an issue with your name request!') return if not isPattern: self.__pendingName = name colorstring = TTLocalizer.NumToColor[dna.headColor] animaltype = TTLocalizer.AnimalToSpecies[dna.getAnimal()] name = colorstring + ' ' + animaltype toonFields = { 'setName': (name,), 'WishNameState': ('PENDING' if not isPattern else '',), 'WishName': (self.__pendingName,), 'setDNAString': (self.dna,), 'setDISLid': (self.target,) } if not self.tf and not self.hood: toonFields['setTutorialAck'] = (1,) toonFields['setQuests'] = ([163, 1000, 1000, 100, 3],) if self.hood: hqZones = [] if self.hood == 1: # dd if not -1 in self.trackChoice: self.demand('Kill', 'Invalid track choice for DD!') return jarsize = 50 gaglimit = 25 hoodId = 1000 prevZones = [2000] questlimit = 2 tier = 4 hp = 25 expm = 1500 elif self.hood == 2: # dg if -1 in self.trackChoice: self.demand('Kill', 'Invalid track choice for DG!') return jarsize = 60 gaglimit = 30 hoodId = 5000 prevZones = [1000, 2000] questlimit = 2 tier = 7 hp = 34 expm = 2300 elif self.hood == 3 and config.GetBool('csp-want-mm', False): # mm (MIGHT BE DISABLED) if -1 in self.trackChoice: self.demand('Kill', 'Invalid track choice for MM!') return jarsize = 80 gaglimit = 35 hoodId = 4000 prevZones = [1000, 2000, 5000] questlimit = 3 tier = 8 hp = 43 expm = 4000 hqZones = [11000] toonFields['setCogParts'] = ((0, 0, 0, 1),) else: self.demand('Kill', 'Invalid hood!') return ta = [0, 0, 0, 0, 1, 1, 0] for t in self.trackChoice: if t != -1: ta[t] = 1 toonFields['setMaxMoney'] = (jarsize,) toonFields['setMaxCarry'] = (gaglimit,) toonFields['setTrackAccess'] = (ta,) toonFields['setDefaultZone'] = (hoodId,) toonFields['setHoodsVisited'] = (prevZones + hqZones + [hoodId],) toonFields['setZonesVisited'] = (prevZones + hqZones + [hoodId],) toonFields['setTeleportAccess'] = (prevZones,) toonFields['setQuestCarryLimit'] = (questlimit,) toonFields['setRewardHistory'] = (tier, []) toonFields['setHp'] = (hp,) toonFields['setMaxHp'] = (hp,) toonFields['setTutorialAck'] = (1,) e = Experience() e.makeExpRegular(expm) for i, t in enumerate(ta): if not t: e.experience[i] = 0 toonFields['setExperience'] = (e.makeNetString(),) self.csm.air.dbInterface.createObject( self.csm.air.dbId, self.csm.air.dclassesByName['DistributedToonUD'], toonFields, self.__handleCreate)