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')
Exemple #6
0
 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])
Exemple #7
0
    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()
Exemple #8
0
 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])
Exemple #9
0
    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)
Exemple #10
0
    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')
Exemple #12
0
    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])
Exemple #16
0
    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)