Пример #1
0
 def __getAccessLevel(self, avatarID):
     av = self.air.doId2do.get(avatarID)
     allowed = 0
     suitType = -1
     if av:
         if self.doorType == DoorTypes.EXT_COGHQ and self.isLockedDoor():
             parts = av.getCogParts()
             dept = ToontownGlobals.cogHQZoneId2deptIndex(
                 self.destinationZone)
             if CogDisguiseGlobals.isPaidSuitComplete(av, parts, dept):
                 if av.getCogMerits(
                 )[dept] >= CogDisguiseGlobals.getTotalMerits(av, dept):
                     suitType = CogDisguiseGlobals.suitTypes.FullSuit
                 else:
                     suitType = CogDisguiseGlobals.suitTypes.NoMerits
                 allowed = 1
             else:
                 suitType = CogDisguiseGlobals.suitTypes.NoSuit
             if ToontownGlobals.SELLBOT_NERF_HOLIDAY in self.air.holidayManager.currentHolidays:
                 allowed = 1
         else:
             allowed = 1
     if not ToontownAccessAI.canAccess(
             avatarID, self.zoneId,
             'DistributedSellbotHQDoorAI.__getAccessLevel'):
         allowed = 0
     return (allowed, suitType)
    def recoverMerits(self, av, cogList, zoneId, multiplier=1, extraMerits=None):
        avId = av.getDoId()
        meritsRecovered = [0, 0, 0, 0]
        if extraMerits is None:
            extraMerits = [0, 0, 0, 0]
        if self.air.suitInvasionManager.getInvading():
            multiplier *= getInvasionMultiplier()
        for i in range(len(extraMerits)):
            if CogDisguiseGlobals.isSuitComplete(av.getCogParts(), i):
                meritsRecovered[i] += extraMerits[i]
                self.notify.debug("recoverMerits: extra merits = %s" % extraMerits[i])

        self.notify.debug("recoverMerits: multiplier = %s" % multiplier)
        for cogDict in cogList:
            dept = SuitDNA.suitDepts.index(cogDict["track"])
            if avId in cogDict["activeToons"]:
                if CogDisguiseGlobals.isSuitComplete(av.getCogParts(), SuitDNA.suitDepts.index(cogDict["track"])):
                    self.notify.debug("recoverMerits: checking against cogDict: %s" % cogDict)
                    rand = random.random() * 100
                    if rand <= self.getPercentChance() and not cogDict["isVirtual"]:
                        merits = cogDict["level"] * MeritMultiplier
                        merits = int(round(merits))
                        if cogDict["hasRevives"]:
                            merits *= 2
                        merits = merits * multiplier
                        merits = int(round(merits))
                        meritsRecovered[dept] += merits
                        self.notify.debug("recoverMerits: merits = %s" % merits)
                    else:
                        self.notify.debug("recoverMerits: virtual cog!")

        if meritsRecovered != [0, 0, 0, 0]:
            actualCounted = [0, 0, 0, 0]
            merits = av.getCogMerits()
            for i in range(len(meritsRecovered)):
                max = CogDisguiseGlobals.getTotalMerits(av, i)
                if max:
                    if merits[i] + meritsRecovered[i] <= max:
                        actualCounted[i] = meritsRecovered[i]
                        merits[i] += meritsRecovered[i]
                    else:
                        actualCounted[i] = max - merits[i]
                        merits[i] = max
                    av.b_setCogMerits(merits)

            if reduce(lambda x, y: x + y, actualCounted):
                self.air.writeServerEvent(
                    "merits",
                    avId=avId,
                    bossbot=actualCounted[0],
                    lawbot=actualCounted[1],
                    cashbot=actualCounted[2],
                    sellbot=actualCounted[3],
                )
                self.notify.debug("recoverMerits: av %s recovered merits %s" % (avId, actualCounted))
        return meritsRecovered
 def recoverPart(self, av, factoryType, suitTrack, zoneId, avList):
     partsRecovered = [0, 0, 0, 0]
     part = av.giveGenericCogPart(factoryType, suitTrack)
     if part:
         partsRecovered[CogDisguiseGlobals.dept2deptIndex(suitTrack)] = part
         self.air.questManager.toonRecoveredCogSuitPart(av, zoneId, avList)
     return partsRecovered
    def requestEnter(self):
        avatarID = self.air.getAvatarIdFromSender()
        allowed = 0
        dept = ToontownGlobals.cogHQZoneId2deptIndex(self.destinationZone)
        av = self.air.doId2do.get(avatarID)
        if av:
            if self.doorType == DoorTypes.EXT_COGHQ and self.isLockedDoor():
                parts = av.getCogParts()
                if CogDisguiseGlobals.isSuitComplete(parts, dept):
                    allowed = 1
                else:
                    allowed = 0
            else:
                allowed = 1

        if not ToontownAccessAI.canAccess(
                avatarID, self.zoneId, 'DistributedCogHQDoorAI.requestEnter'):
            allowed = 0

        if not allowed:
            self.sendReject(avatarID, self.isLockedDoor())
        else:
            self.enqueueAvatarIdEnter(avatarID)
            self.sendUpdateToAvatarId(
                avatarID, 'setOtherZoneIdAndDoId',
                [self.destinationZone,
                 self.otherDoor.getDoId()])
Пример #5
0
 def requestEnter(self):
     avatarID = self.air.getAvatarIdFromSender()
     assert(self.notify.debug("requestEnter: avatarID:%s" % avatarID))
     # Ext cog hq doors require all cog disguise parts
     # does the toon have a complete cog disguise?
     dept = ToontownGlobals.cogHQZoneId2deptIndex(self.destinationZone)
     av = self.air.doId2do.get(avatarID)
     if av:
         if self.doorType == DoorTypes.EXT_COGHQ and self.isLockedDoor():
             parts = av.getCogParts()
             if CogDisguiseGlobals.isSuitComplete(parts, dept):
                 allowed = 1
             else:
                 allowed = 0
         # Interior doors allow all
         else:
             allowed = 1
             
     # Check that player has full access
     if not ToontownAccessAI.canAccess(avatarID, self.zoneId):
         allowed = 0
             
     # Now send a message back - either reject or accept
     if not allowed:
         self.sendReject(avatarID, self.isLockedDoor())
     else:
         self.enqueueAvatarIdEnter(avatarID)
         self.sendUpdateToAvatarId(avatarID, "setOtherZoneIdAndDoId",
                                   [self.destinationZone, self.otherDoor.getDoId()])
 def recoverPart(self, av, factoryType, suitTrack, zoneId, avList):
     partsRecovered = [0, 0, 0, 0]
     part = av.giveGenericCogPart(factoryType, suitTrack)
     
     if part:
         partsRecovered[CogDisguiseGlobals.dept2deptIndex(suitTrack)] = part
         self.air.questManager.toonRecoveredCogSuitPart(av, zoneId, avList)
     
     return partsRecovered
Пример #7
0
    def __getAccessLevel(self, avatarID):
        av = self.air.doId2do.get(avatarID)
        allowed = 0
        suitType = -1
        if av:
            if self.doorType == DoorTypes.EXT_COGHQ and self.isLockedDoor():
                parts = av.getCogParts()
                dept = ToontownGlobals.cogHQZoneId2deptIndex(
                    self.destinationZone)
                if CogDisguiseGlobals.isSuitComplete(parts, dept):
                    if av.getCogMerits(
                    )[dept] >= CogDisguiseGlobals.getTotalMerits(av, dept):
                        suitType = CogDisguiseGlobals.suitTypes.FullSuit
                    else:
                        suitType = CogDisguiseGlobals.suitTypes.NoMerits
                    allowed = 1
                else:
                    suitType = CogDisguiseGlobals.suitTypes.NoSuit
                if ToontownGlobals.Holidays.SellbotNerfHoliday in self.air.holidayManager.currentHolidays:
                    allowed = 1
            else:
                allowed = 1

        return (allowed, suitType)
 def requestEnter(self):
     avId = self.air.getAvatarIdFromSender()
     dept = ToontownGlobals.cogHQZoneId2deptIndex(self.destinationZone)
     av = self.air.doId2do.get(avId)
     if av:
         if self.doorType == DoorTypes.EXT_COGHQ and self.isLockedDoor():
             parts = av.getCogParts()
             if CogDisguiseGlobals.isSuitComplete(parts, dept):
                 allowed = 1
             else:
                 allowed = 0
         else:
             allowed = 1
         if not allowed:
             self.sendReject(avId, self.isLockedDoor())
         else:
             print("********\nRequesting Lobby GUI...\n********")
             self.sendUpdate('selectLobby', [avId])
 def requestEnter(self):
     avId = self.air.getAvatarIdFromSender()
     dept = ToontownGlobals.cogHQZoneId2deptIndex(self.destinationZone)
     av = self.air.doId2do.get(avId)
     if av:
         if self.doorType == DoorTypes.EXT_COGHQ and self.isLockedDoor():
             parts = av.getCogParts()
             if CogDisguiseGlobals.isSuitComplete(parts, dept):
                 allowed = 1
             else:
                 allowed = 0
         else:
             allowed = 1
         if not allowed:
             self.sendReject(avId, self.isLockedDoor())
         else:
             print("********\nRequesting Lobby GUI...\n********")
             self.sendUpdate('selectLobby', [avId])
 def requestEnter(self):
     avatarID = self.air.getAvatarIdFromSender()
     dept = ToontownGlobals.cogHQZoneId2deptIndex(self.destinationZone)
     av = self.air.doId2do.get(avatarID)
     if av:
         if self.doorType == DoorTypes.EXT_COGHQ and self.isLockedDoor():
             parts = av.getCogParts()
             if CogDisguiseGlobals.isSuitComplete(parts, dept):
                 allowed = 1
             else:
                 allowed = 0
         else:
             allowed = 1
         if not allowed:
             self.sendReject(avatarID, self.isLockedDoor())
         else:
             self.enqueueAvatarIdEnter(avatarID)
             self.sendUpdateToAvatarId(avatarID, 'setOtherZoneIdAndDoId', [self.destinationZone, self.otherDoor.getDoId()])
Пример #11
0
    def recoverMerits(self, av, cogList, zoneId, multiplier=1, extraMerits=None):
        avId = av.getDoId()
        meritsRecovered = [0,
         0,
         0,
         0]
        if extraMerits is None:
            extraMerits = [
             0,
             0,
             0,
             0]
        if self.air.suitInvasionManager.getInvading():
            multiplier *= getInvasionMultiplier()
        multiplier *= self.air.meritMultiplier
        for i in xrange(len(extraMerits)):
            if CogDisguiseGlobals.isSuitComplete(av.getCogParts(), i):
                meritsRecovered[i] += extraMerits[i]
                self.notify.debug('recoverMerits: extra merits = %s' % extraMerits[i])

        self.notify.debug('recoverMerits: multiplier = %s' % multiplier)
        for cogDict in cogList:
            dept = SuitDNA.suitDepts.index(cogDict['track'])
            if avId in cogDict['activeToons']:
                if CogDisguiseGlobals.isSuitComplete(av.getCogParts(), SuitDNA.suitDepts.index(cogDict['track'])):
                    self.notify.debug('recoverMerits: checking against cogDict: %s' % cogDict)
                    rand = random.random() * 100
                    if rand <= self.getPercentChance() and not cogDict['isVirtual']:
                        merits = cogDict['level'] * MeritMultiplier
                        merits = int(round(merits))
                        if cogDict['hasRevives']:
                            merits *= 2
                        merits = merits * multiplier
                        merits = int(round(merits))
                        meritsRecovered[dept] += merits
                        self.notify.debug('recoverMerits: merits = %s' % merits)
                    else:
                        self.notify.debug('recoverMerits: virtual cog!')

        if meritsRecovered != [0,
         0,
         0,
         0]:
            actualCounted = [
             0,
             0,
             0,
             0]
            merits = av.getCogMerits()
            for i in xrange(len(meritsRecovered)):
                max = CogDisguiseGlobals.getTotalMerits(av, i)
                if max:
                    if merits[i] + meritsRecovered[i] <= max:
                        actualCounted[i] = meritsRecovered[i]
                        merits[i] += meritsRecovered[i]
                    else:
                        actualCounted[i] = max - merits[i]
                        merits[i] = max
                    av.b_setCogMerits(merits)

            if reduce(lambda x, y: x + y, actualCounted):
                self.air.writeServerEvent('merits', avId, '%s|%s|%s|%s' % tuple(actualCounted))
                self.notify.debug('recoverMerits: av %s recovered merits %s' % (avId, actualCounted))
        return meritsRecovered
 def removeParts(self, toon, suitDept):
     parts = toon.getCogParts()
     if CogDisguiseGlobals.isSuitComplete(parts, suitDept):
         toon.loseCogParts(suitDept)
Пример #13
0
    def recoverMerits(self, av, cogList, zoneId, multiplier=1, extraMerits=None):
        avId = av.getDoId()
        meritsRecovered = [0,0,0,0]
        if extraMerits is None:
            extraMerits = [0,0,0,0]

        # multiply merit bonus during invasions too
        if self.air.suitInvasionManager.getInvading():
            multiplier *= getInvasionMultiplier()
          
        # start with any extra merits
        for i in range(len(extraMerits)):
            if CogDisguiseGlobals.isSuitComplete(av.getCogParts(), i):
                meritsRecovered[i] += extraMerits[i]
                self.notify.debug("recoverMerits: extra merits = %s" % (extraMerits[i]))

        self.notify.debug("recoverMerits: multiplier = %s" % (multiplier))
                                        
        # add merits for every cog defeated
        for cogDict in cogList:
            dept = SuitDNA.suitDepts.index(cogDict['track'])
            if avId in cogDict['activeToons']:
                # only let them recover merits if suit is complete
                if CogDisguiseGlobals.isSuitComplete(av.getCogParts(),
                                                     SuitDNA.suitDepts.index(cogDict['track'])):
                    self.notify.debug("recoverMerits: checking against cogDict: %s" % (cogDict))
                    # determine if we 'won' any merits
                    rand = random.random() * 100

                    # don't reward merits for 'virtual' cogs
                    if rand <= self.getPercentChance() and not cogDict['isVirtual']:
                        # add in recovered merits
                        merits = cogDict['level'] * MeritMultiplier
                        # round up
                        merits = int(round(merits))
                        # if this cog had revives, reward 2x merits
                        if cogDict['hasRevives']:
                            merits *= 2                      
                        # add floor/stage bonus
                        merits = merits * multiplier
                        # round up again
                        merits = int(round(merits))
                        # sum it up
                        meritsRecovered[dept] += merits
                        self.notify.debug("recoverMerits: merits = %s" % (merits))
                    else:
                        self.notify.debug("recoverMerits: virtual cog!")


        # Now set the merits on the avatar if the status changed
        if meritsRecovered != [0,0,0,0]:
            actualCounted = [0,0,0,0]
            merits = av.getCogMerits()
            for i in range(len(meritsRecovered)):
                max = CogDisguiseGlobals.getTotalMerits(av, i)
                if max:
                    # if we are under level max, inc merits
                    if merits[i] + meritsRecovered[i] <= max:
                        actualCounted[i] = meritsRecovered[i]
                        merits[i] += meritsRecovered[i]
                    else:
                        actualCounted[i] = max - merits[i]
                        # otherwise set to max
                        merits[i] = max
                    # update the toons merits
                    av.b_setCogMerits(merits)

            # Only log if they actually got some merits
            if reduce(lambda x,y: x+y, actualCounted):
                self.air.writeServerEvent('merits', avId, ("%s|%s|%s|%s" % tuple(actualCounted)))
                self.notify.debug("recoverMerits: av %s recovered merits %s" % (avId, actualCounted))
            
        return meritsRecovered
 def removeParts(self, toon, suitDept):
     parts = toon.getCogParts()
     if CogDisguiseGlobals.isSuitComplete(parts, suitDept):
         toon.loseCogParts(suitDept)