Esempio n. 1
0
    def goToPartyFailed(self, reason):
        self.notify.debug("goToPartyFailed")
        failedToVisitAvId = self.doneStatus.get("avId")

        message = base.cr.partyManager.getGoToPartyFailedMessage(reason)

        self.notify.debug("goToPartyFailed, why =: %s" % message)
        #  ignore the gotLocalPartyZone message
        # Isn't this redudant? it's only doing an acceptOnce
        self.ignore("gotLocalPartyZone")

        # TODO-parties: If we came here from a party, then make sure to send me back to that party.
        zoneId = base.localAvatar.lastHood
        loaderName = ZoneUtil.getLoaderName(zoneId)
        whereName = ZoneUtil.getToonWhereName(zoneId)

        base.localAvatar.setSystemMessage(0, message)
        self.fsm.request("quietZone", [{
            "loader": loaderName,
            "where": whereName,
            "how": "teleportIn",
            "hoodId": zoneId,
            "zoneId": zoneId,
            "shardId": None
        }])
        return Task.done
Esempio n. 2
0
    def goHomeFailed(self, task):
        self.notify.debug("goHomeFailed")
        failedToVisitAvId = self.doneStatus.get("avId")

        # disallow transitive friends
        if failedToVisitAvId > 0:
            message = TTLocalizer.EstateTeleportFailedNotFriends % base.cr.identifyAvatar(
                failedToVisitAvId).getName()
        else:
            message = TTLocalizer.EstateTeleportFailed
        self.notify.debug("goHomeFailed, why =: %s" % message)
        #  ignore the setLocalEstateZone message
        self.ignore("setLocalEstateZone")
        zoneId = base.localAvatar.lastHood
        loaderName = ZoneUtil.getLoaderName(zoneId)
        whereName = ZoneUtil.getToonWhereName(zoneId)

        base.localAvatar.setSystemMessage(0, message)
        self.fsm.request("quietZone", [{
            "loader": loaderName,
            "where": whereName,
            "how": "teleportIn",
            "hoodId": zoneId,
            "zoneId": zoneId,
            "shardId": None
        }])
        return Task.done
Esempio n. 3
0
    def handleStageWinEvent(self):
        StageInterior.notify.debug("handleStageWinEvent")

        if base.cr.playGame.getPlace().fsm.getCurrentState().getName() == "died":
            return

        self.stageDefeated = 1

        if 1:
            zoneId = ZoneUtil.getHoodId(self.zoneId)
        else:
            zoneId = ZoneUtil.getSafeZoneId(base.localAvatar.defaultZone)

        self.fsm.request(
            "teleportOut",
            [
                {
                    "loader": ZoneUtil.getLoaderName(zoneId),
                    "where": ZoneUtil.getToonWhereName(zoneId),
                    "how": "teleportIn",
                    "hoodId": zoneId,
                    "zoneId": zoneId,
                    "shardId": None,
                    "avId": -1,
                }
            ],
        )
Esempio n. 4
0
    def addLinkTunnelHooks(self, hoodPart, nodeList, currentZoneId):
        tunnelOriginList = []
        for i in nodeList:
            linkTunnelNPC = i.findAllMatches('**/linktunnel*')
            for p in range(linkTunnelNPC.getNumPaths()):
                linkTunnel = linkTunnelNPC.getPath(p)
                name = linkTunnel.getName()
                nameParts = name.split('_')
                hoodStr = nameParts[1]
                zoneStr = nameParts[2]
                hoodId = self.getIdFromName(hoodStr)
                zoneId = int(zoneStr)
                hoodId = ZoneUtil.getTrueZoneId(hoodId, currentZoneId)
                zoneId = ZoneUtil.getTrueZoneId(zoneId, currentZoneId)
                linkSphere = linkTunnel.find('**/tunnel_trigger')
                if linkSphere.isEmpty():
                    linkSphere = linkTunnel.find('**/tunnel_sphere')

                if not linkSphere.isEmpty():
                    cnode = linkSphere.node()
                    cnode.setName('tunnel_trigger_' + hoodStr + '_' + zoneStr)
                    cnode.setCollideMask(ToontownGlobals.WallBitmask
                                         | ToontownGlobals.GhostBitmask)
                else:
                    linkSphere = linkTunnel.find('**/tunnel_trigger_' +
                                                 hoodStr + '_' + zoneStr)
                    if linkSphere.isEmpty():
                        self.notify.error('tunnel_trigger not found')

                tunnelOrigin = linkTunnel.find('**/tunnel_origin')
                if tunnelOrigin.isEmpty():
                    self.notify.error('tunnel_origin not found')

                tunnelOriginPlaceHolder = render.attachNewNode('toph_' +
                                                               hoodStr + '_' +
                                                               zoneStr)
                tunnelOriginList.append(tunnelOriginPlaceHolder)
                tunnelOriginPlaceHolder.setPos(tunnelOrigin.getPos(render))
                tunnelOriginPlaceHolder.setHpr(tunnelOrigin.getHpr(render))
                hood = base.localAvatar.cr.playGame.hood
                if ZoneUtil.tutorialDict:
                    how = 'teleportIn'
                    tutorialFlag = 1
                else:
                    how = 'tunnelIn'
                    tutorialFlag = 0
                hoodPart.accept('enter' + linkSphere.getName(),
                                hoodPart.handleEnterTunnel,
                                [{
                                    'loader': ZoneUtil.getLoaderName(zoneId),
                                    'where': ZoneUtil.getToonWhereName(zoneId),
                                    'how': how,
                                    'hoodId': hoodId,
                                    'zoneId': zoneId,
                                    'shardId': None,
                                    'tunnelOrigin': tunnelOriginPlaceHolder,
                                    'tutorial': tutorialFlag
                                }])

        return tunnelOriginList
Esempio n. 5
0
 def enter(self, hoodId, zoneId, avId):
     Discord.setZone(zoneId)
     if hoodId == ToontownGlobals.Tutorial:
         loaderName = 'townLoader'
         whereName = 'toonInterior'
     elif hoodId == ToontownGlobals.MyEstate:
         self.getEstateZoneAndGoHome(avId, zoneId)
         return
     elif hoodId == ToontownGlobals.PartyHood:
         self.getPartyZoneAndGoToParty(avId, zoneId)
         return
     else:
         loaderName = ZoneUtil.getLoaderName(zoneId)
         whereName = ZoneUtil.getToonWhereName(zoneId)
     self.fsm.request('quietZone', [{
         'loader': loaderName,
         'where': whereName,
         'how': 'teleportIn',
         'hoodId': hoodId,
         'zoneId': zoneId,
         'shardId': None,
         'avId': avId
     }])
     Discord.setZone(zoneId)
     return
Esempio n. 6
0
 def enter(self, hoodId, zoneId, avId):
     if hoodId == ToontownGlobals.Tutorial:
         loaderName = "townLoader"
         whereName = "toonInterior"
     elif hoodId == ToontownGlobals.MyEstate:
         self.getEstateZoneAndGoHome(avId, zoneId)
         return
     elif hoodId == ToontownGlobals.PartyHood:
         self.getPartyZoneAndGoToParty(avId, zoneId)
         return
     else:
         loaderName = ZoneUtil.getLoaderName(zoneId)
         whereName = ZoneUtil.getToonWhereName(zoneId)
     self.fsm.request(
         "quietZone",
         [
             {
                 "loader": loaderName,
                 "where": whereName,
                 "how": "teleportIn",
                 "hoodId": hoodId,
                 "zoneId": zoneId,
                 "shardId": None,
                 "avId": avId,
             }
         ],
     )
     return
Esempio n. 7
0
 def goHomeFailed(self, task):
     self.notify.debug("goHomeFailed")
     failedToVisitAvId = self.doneStatus.get("avId")
     if failedToVisitAvId > 0:
         message = TTLocalizer.EstateTeleportFailedNotFriends % base.cr.identifyAvatar(failedToVisitAvId).getName()
     else:
         message = TTLocalizer.EstateTeleportFailed
     self.notify.debug("goHomeFailed, why =: %s" % message)
     self.ignore("setLocalEstateZone")
     zoneId = base.localAvatar.lastHood
     loaderName = ZoneUtil.getLoaderName(zoneId)
     whereName = ZoneUtil.getToonWhereName(zoneId)
     base.localAvatar.setSystemMessage(0, message)
     self.fsm.request(
         "quietZone",
         [
             {
                 "loader": loaderName,
                 "where": whereName,
                 "how": "teleportIn",
                 "hoodId": zoneId,
                 "zoneId": zoneId,
                 "shardId": None,
             }
         ],
     )
     return Task.done
Esempio n. 8
0
    def handleStageWinEvent(self):
        """this handler is called when the stage has been defeated"""
        StageInterior.notify.debug('handleStageWinEvent')

        # if we're in the process of dying, ignore this
        if (base.cr.playGame.getPlace().fsm.getCurrentState().getName() ==
                'died'):
            return

        # update our flag
        self.stageDefeated = 1

        if 1:
            # go back to HQ
            zoneId = ZoneUtil.getHoodId(self.zoneId)
        else:
            # go back to the playground
            zoneId = ZoneUtil.getSafeZoneId(base.localAvatar.defaultZone)
        self.fsm.request('teleportOut',
                         [{
                             "loader": ZoneUtil.getLoaderName(zoneId),
                             "where": ZoneUtil.getToonWhereName(zoneId),
                             "how": "teleportIn",
                             "hoodId": zoneId,
                             "zoneId": zoneId,
                             "shardId": None,
                             "avId": -1,
                         }])
Esempio n. 9
0
    def enter(self, hoodId, zoneId, avId):
        """enter(self)
        You will only get this case if you came from outside this shard
        This means login, or switching shards
        avId is the avatar to teleport to, or -1 to put you at the
        safezone.
        """
        if hoodId == ToontownGlobals.Tutorial:
            loaderName = "townLoader"
            whereName = "toonInterior"
        elif hoodId == ToontownGlobals.MyEstate:
            # we just switched shards.  The zoneId we have right now is the zoneId
            # we will be going to.  But we still need to call
            # getEstateZone on the AI again, so the AI can do it's bookkeeping
            # on the estate.
            self.getEstateZoneAndGoHome(avId, zoneId)
            return
        elif hoodId == ToontownGlobals.PartyHood:
            # We just switched to the Party shard. We need to check if the party
            # exists and create it if necessary through getPartyZoneAndGoToParty:
            self.getPartyZoneAndGoToParty(avId, zoneId)
            return
        else:
            loaderName = ZoneUtil.getLoaderName(zoneId)
            whereName = ZoneUtil.getToonWhereName(zoneId)

        self.fsm.request("quietZone", [{
            "loader": loaderName,
            "where": whereName,
            "how": "teleportIn",
            "hoodId": hoodId,
            "zoneId": zoneId,
            "shardId": None,
            "avId": avId
        }])
Esempio n. 10
0
    def addLinkTunnelHooks(self, hoodPart, nodeList, currentZoneId):
        tunnelOriginList = []
        for i in nodeList:
            linkTunnelNPC = i.findAllMatches('**/linktunnel*')
            for p in range(linkTunnelNPC.getNumPaths()):
                linkTunnel = linkTunnelNPC.getPath(p)
                name = linkTunnel.getName()
                nameParts = name.split('_')
                hoodStr = nameParts[1]
                zoneStr = nameParts[2]
                hoodId = self.getIdFromName(hoodStr)
                zoneId = int(zoneStr)
                hoodId = ZoneUtil.getTrueZoneId(hoodId, currentZoneId)
                zoneId = ZoneUtil.getTrueZoneId(zoneId, currentZoneId)
                linkSphere = linkTunnel.find('**/tunnel_trigger')
                if linkSphere.isEmpty():
                    linkSphere = linkTunnel.find('**/tunnel_sphere')

                if not linkSphere.isEmpty():
                    cnode = linkSphere.node()
                    cnode.setName('tunnel_trigger_' + hoodStr + '_' + zoneStr)
                    cnode.setCollideMask(ToontownGlobals.WallBitmask
                                         | ToontownGlobals.GhostBitmask)
                else:
                    linkSphere = linkTunnel.find('**/tunnel_trigger_' +
                                                 hoodStr + '_' + zoneStr)
                    if linkSphere.isEmpty():
                        self.notify.error('tunnel_trigger not found')

                tunnelOrigin = linkTunnel.find('**/tunnel_origin')
                if tunnelOrigin.isEmpty():
                    self.notify.error('tunnel_origin not found')

                tunnelOriginPlaceHolder = render.attachNewNode(
                    'toph_' + hoodStr + '_' + zoneStr)
                tunnelOriginList.append(tunnelOriginPlaceHolder)
                tunnelOriginPlaceHolder.setPos(tunnelOrigin.getPos(render))
                tunnelOriginPlaceHolder.setHpr(tunnelOrigin.getHpr(render))
                hood = base.localAvatar.cr.playGame.hood
                if ZoneUtil.tutorialDict:
                    how = 'teleportIn'
                    tutorialFlag = 1
                else:
                    how = 'tunnelIn'
                    tutorialFlag = 0
                hoodPart.accept('enter' + linkSphere.getName(),
                                hoodPart.handleEnterTunnel,
                                [{
                                    'loader': ZoneUtil.getLoaderName(zoneId),
                                    'where': ZoneUtil.getToonWhereName(zoneId),
                                    'how': how,
                                    'hoodId': hoodId,
                                    'zoneId': zoneId,
                                    'shardId': None,
                                    'tunnelOrigin': tunnelOriginPlaceHolder,
                                    'tutorial': tutorialFlag
                                }])

        return tunnelOriginList
 def forcedExit(self, avId):
     target_sz = base.localAvatar.defaultZone
     base.cr.playGame.getPlace().fsm.request(
         'teleportOut',
         [{'loader': ZoneUtil.getLoaderName(target_sz),
           'where': ZoneUtil.getWhereName(target_sz, 1),
           'how': 'teleportIn', 'hoodId': target_sz, 'zoneId': target_sz,
           'shardId': None, 'avId': -1}],
         force=1)
     return
 def kickToonsOut(self):
     if not self.localToonOnBoard:
         zoneId = self.cr.playGame.hood.hoodId
         self.cr.playGame.getPlace().fsm.request(
             'teleportOut',
             [{'loader': ZoneUtil.getLoaderName(zoneId),
               'where': ZoneUtil.getToonWhereName(zoneId),
               'how': 'teleportIn', 'hoodId': zoneId, 'zoneId': zoneId,
               'shardId': None, 'avId': -1}])
     return
 def localToonDied(self):
     target_sz = ZoneUtil.getSafeZoneId(localAvatar.defaultZone)
     place = self.cr.playGame.getPlace()
     place.fsm.request(
         'died',
         [{'loader': ZoneUtil.getLoaderName(target_sz),
           'where': ZoneUtil.getWhereName(target_sz, 1),
           'how': 'teleportIn', 'hoodId': target_sz, 'zoneId': target_sz,
           'shardId': None, 'avId': -1, 'battle': 1}])
     return
 def kickToonsOut(self):
     if not self.localToonOnBoard:
         zoneId = self.cr.playGame.hood.hoodId
         self.cr.playGame.getPlace().fsm.request('teleportOut', [{'loader': ZoneUtil.getLoaderName(zoneId),
           'where': ZoneUtil.getToonWhereName(zoneId),
           'how': 'teleportIn',
           'hoodId': zoneId,
           'zoneId': zoneId,
           'shardId': None,
           'avId': -1}])
Esempio n. 15
0
 def forcedExit(self, avId):
     target_sz = base.localAvatar.defaultZone
     base.cr.playGame.getPlace().fsm.request('teleportOut', [{'loader': ZoneUtil.getLoaderName(target_sz),
       'where': ZoneUtil.getWhereName(target_sz, 1),
       'how': 'teleportIn',
       'hoodId': target_sz,
       'zoneId': target_sz,
       'shardId': None,
       'avId': -1}], force=1)
     return
Esempio n. 16
0
 def localToonDied(self):
     target_sz = ZoneUtil.getSafeZoneId(localAvatar.defaultZone)
     place = self.cr.playGame.getPlace()
     place.fsm.request('died', [{'loader': ZoneUtil.getLoaderName(target_sz),
       'where': ZoneUtil.getWhereName(target_sz, 1),
       'how': 'teleportIn',
       'hoodId': target_sz,
       'zoneId': target_sz,
       'shardId': None,
       'avId': -1,
       'battle': 1}])
Esempio n. 17
0
 def handleCountryClubWinEvent(self):
     CountryClubInterior.notify.debug('handleCountryClubWinEvent')
     if base.cr.playGame.getPlace().fsm.getCurrentState().getName() == 'died':
         return
     self.CountryClubDefeated = 1
     zoneId = ZoneUtil.getHoodId(self.zoneId)
     self.fsm.request('teleportOut', [{'loader': ZoneUtil.getLoaderName(zoneId),
       'where': ZoneUtil.getToonWhereName(zoneId),
       'how': 'teleportIn',
       'hoodId': zoneId,
       'zoneId': zoneId,
       'shardId': None,
       'avId': -1}])
 def kickToonsOut(self):
     #print"TOONS BEING KICKED OUT"
     if not self.localToonOnBoard:
         zoneId = self.cr.playGame.hood.hoodId
         self.cr.playGame.getPlace().fsm.request('teleportOut', [{
             "loader": ZoneUtil.getLoaderName(zoneId),
             "where": ZoneUtil.getToonWhereName(zoneId),
             "how": "teleportIn",
             "hoodId": zoneId,
             "zoneId": zoneId,
             "shardId": None,
             "avId": -1,
             }])
 def forcedExit(self, avId):
     # This should only be sent to us if the timer expired on the
     # elevator before we boarded.
     assert(base.localAvatar.getDoId() == avId)
     # Teleport to the last safe zone visited.
     target_sz = base.localAvatar.defaultZone
     base.cr.playGame.getPlace().fsm.request('teleportOut', [{
         "loader" : ZoneUtil.getLoaderName(target_sz),
         "where" : ZoneUtil.getWhereName(target_sz, 1),
         'how' : 'teleportIn',
         'hoodId' : target_sz,
         'zoneId' : target_sz,
         'shardId' : None,
         'avId' : -1,
         }], force = 1)
 def handleMintWinEvent(self):
     MintInterior.notify.debug('handleMintWinEvent')
     if base.cr.playGame.getPlace().fsm.getCurrentState().getName() == 'died':
         return
     self.mintDefeated = 1
     if 1:
         zoneId = ZoneUtil.getHoodId(self.zoneId)
     else:
         zoneId = ZoneUtil.getSafeZoneId(base.localAvatar.defaultZone)
     self.fsm.request('teleportOut', [{'loader': ZoneUtil.getLoaderName(zoneId),
                                      'where': ZoneUtil.getToonWhereName(zoneId),
                                      'how': 'teleportIn',
                                      'hoodId': zoneId,
                                      'zoneId': zoneId,
                                      'shardId': None,
                                      'avId': -1}])
Esempio n. 21
0
 def handleFactoryWinEvent(self):
     FactoryInterior.notify.info('handleFactoryWinEvent')
     if base.cr.playGame.getPlace().fsm.getCurrentState().getName() == 'died':
         return
     else:
         self.factoryDefeated = 1
         zoneId = ZoneUtil.getHoodId(self.zoneId)
         self.fsm.request('teleportOut', [
          {'loader': ZoneUtil.getLoaderName(zoneId), 
             'where': ZoneUtil.getToonWhereName(zoneId), 
             'how': 'teleportIn', 
             'hoodId': zoneId, 
             'zoneId': zoneId, 
             'shardId': None, 
             'avId': -1}])
         return
 def handleMintWinEvent(self):
     MintInterior.notify.debug('handleMintWinEvent')
     if base.cr.playGame.getPlace().fsm.getCurrentState().getName() == 'died':
         return
     self.mintDefeated = 1
     if 1:
         zoneId = ZoneUtil.getHoodId(self.zoneId)
     else:
         zoneId = ZoneUtil.getSafeZoneId(base.localAvatar.defaultZone)
     self.fsm.request('teleportOut', [{'loader': ZoneUtil.getLoaderName(zoneId),
                                      'where': ZoneUtil.getToonWhereName(zoneId),
                                      'how': 'teleportIn',
                                      'hoodId': zoneId,
                                      'zoneId': zoneId,
                                      'shardId': None,
                                      'avId': -1}])
Esempio n. 23
0
 def goToPartyFailed(self, reason):
     self.notify.debug('goToPartyFailed')
     failedToVisitAvId = self.doneStatus.get('avId')
     message = base.cr.partyManager.getGoToPartyFailedMessage(reason)
     self.notify.debug('goToPartyFailed, why =: %s' % message)
     self.ignore('gotLocalPartyZone')
     zoneId = base.localAvatar.lastHood
     loaderName = ZoneUtil.getLoaderName(zoneId)
     whereName = ZoneUtil.getToonWhereName(zoneId)
     base.localAvatar.setSystemMessage(0, message)
     self.fsm.request('quietZone', [{'loader': loaderName,
       'where': whereName,
       'how': 'teleportIn',
       'hoodId': zoneId,
       'zoneId': zoneId,
       'shardId': None}])
     return Task.done
 def forcedExit(self, avId):
     target_sz = base.localAvatar.defaultZone
     base.cr.playGame.getPlace().fsm.request(
         "teleportOut",
         [
             {
                 "loader": ZoneUtil.getLoaderName(target_sz),
                 "where": ZoneUtil.getWhereName(target_sz, 1),
                 "how": "teleportIn",
                 "hoodId": target_sz,
                 "zoneId": target_sz,
                 "shardId": None,
                 "avId": -1,
             }
         ],
         force=1,
     )
Esempio n. 25
0
 def goToPartyFailed(self, reason):
     self.notify.debug('goToPartyFailed')
     failedToVisitAvId = self.doneStatus.get('avId')
     message = base.cr.partyManager.getGoToPartyFailedMessage(reason)
     self.notify.debug('goToPartyFailed, why =: %s' % message)
     self.ignore('gotLocalPartyZone')
     zoneId = base.localAvatar.lastHood
     loaderName = ZoneUtil.getLoaderName(zoneId)
     whereName = ZoneUtil.getToonWhereName(zoneId)
     base.localAvatar.setSystemMessage(0, message)
     self.fsm.request('quietZone', [{'loader': loaderName,
       'where': whereName,
       'how': 'teleportIn',
       'hoodId': zoneId,
       'zoneId': zoneId,
       'shardId': None}])
     return Task.done
 def kickToonsOut(self):
     if not self.localToonOnBoard:
         zoneId = self.cr.playGame.hood.hoodId
         self.cr.playGame.getPlace().fsm.request(
             "teleportOut",
             [
                 {
                     "loader": ZoneUtil.getLoaderName(zoneId),
                     "where": ZoneUtil.getToonWhereName(zoneId),
                     "how": "teleportIn",
                     "hoodId": zoneId,
                     "zoneId": zoneId,
                     "shardId": None,
                     "avId": -1,
                 }
             ],
         )
     return
 def enterTunnelOut(self, requestStatus):
     hoodId = requestStatus['hoodId']
     zoneId = requestStatus['zoneId']
     how = requestStatus['how']
     tunnelOrigin = requestStatus['tunnelOrigin']
     fromZoneId = ZoneUtil.getCanonicalZoneId(self.getZoneId())
     tunnelName = requestStatus.get('tunnelName')
     if tunnelName == None:
         tunnelName = base.cr.hoodMgr.makeLinkTunnelName(self.loader.hood.id, fromZoneId)
     self.doneStatus = {'loader': ZoneUtil.getLoaderName(zoneId),
      'where': ZoneUtil.getToonWhereName(zoneId),
      'how': how,
      'hoodId': hoodId,
      'zoneId': zoneId,
      'shardId': None,
      'tunnelName': tunnelName}
     self.accept('tunnelOutMovieDone', self.__tunnelOutMovieDone)
     base.localAvatar.tunnelOut(tunnelOrigin)
     base.localAvatar.stopQuestMap()
Esempio n. 28
0
 def goHomeFailed(self, task):
     self.notify.debug('goHomeFailed')
     failedToVisitAvId = self.doneStatus.get('avId')
     if failedToVisitAvId > 0:
         message = TTLocalizer.EstateTeleportFailedNotFriends % base.cr.identifyAvatar(failedToVisitAvId).getName()
     else:
         message = TTLocalizer.EstateTeleportFailed
     self.notify.debug('goHomeFailed, why =: %s' % message)
     self.ignore('setLocalEstateZone')
     zoneId = base.localAvatar.lastHood
     loaderName = ZoneUtil.getLoaderName(zoneId)
     whereName = ZoneUtil.getToonWhereName(zoneId)
     base.localAvatar.setSystemMessage(0, message)
     self.fsm.request('quietZone', [{'loader': loaderName,
       'where': whereName,
       'how': 'teleportIn',
       'hoodId': zoneId,
       'zoneId': zoneId,
       'shardId': None}])
     return Task.done
Esempio n. 29
0
 def goHomeFailed(self, task):
     self.notify.debug('goHomeFailed')
     failedToVisitAvId = self.doneStatus.get('avId')
     if failedToVisitAvId > 0:
         message = TTLocalizer.EstateTeleportFailedNotFriends % base.cr.identifyAvatar(failedToVisitAvId).getName()
     else:
         message = TTLocalizer.EstateTeleportFailed
     self.notify.debug('goHomeFailed, why =: %s' % message)
     self.ignore('setLocalEstateZone')
     zoneId = base.localAvatar.lastHood
     loaderName = ZoneUtil.getLoaderName(zoneId)
     whereName = ZoneUtil.getToonWhereName(zoneId)
     base.localAvatar.setSystemMessage(0, message)
     self.fsm.request('quietZone', [{'loader': loaderName,
       'where': whereName,
       'how': 'teleportIn',
       'hoodId': zoneId,
       'zoneId': zoneId,
       'shardId': None}])
     return Task.done
Esempio n. 30
0
 def teleportToBankInterior(self):
     hoodId = ZoneUtil.getTrueZoneId(21000, 21000)
     zoneId = ZoneUtil.getTrueZoneId(21401, 21000)
     how = 'teleportIn'
     tunnelOriginPlaceHolder = render.attachNewNode('toph_21000_21401')
     tutorialFlag = 0
     requestStatus = {
         'loader': ZoneUtil.getLoaderName(zoneId),
         'where': ZoneUtil.getToonWhereName(zoneId),
         'how': how,
         'hoodId': hoodId,
         'zoneId': zoneId,
         'shardId': None,
         'tunnelOrigin': tunnelOriginPlaceHolder,
         'tutorial': tutorialFlag,
         'avId': -1
     }
     place = base.cr.playGame.getPlace()
     if place:
         place.requestLeave(requestStatus)
     return
Esempio n. 31
0
 def enter(self, hoodId, zoneId, avId):
     if hoodId == ToontownGlobals.Tutorial:
         loaderName = 'townLoader'
         whereName = 'toonInterior'
     elif hoodId == ToontownGlobals.MyEstate:
         self.getEstateZoneAndGoHome(avId, zoneId)
         return
     elif hoodId == ToontownGlobals.PartyHood:
         self.getPartyZoneAndGoToParty(avId, zoneId)
         return
     else:
         loaderName = ZoneUtil.getLoaderName(zoneId)
         whereName = ZoneUtil.getToonWhereName(zoneId)
     self.fsm.request('quietZone', [{'loader': loaderName,
       'where': whereName,
       'how': 'teleportIn',
       'hoodId': hoodId,
       'zoneId': zoneId,
       'shardId': None,
       'avId': avId}])
     return
Esempio n. 32
0
 def bathroomTeleport(self):
     self.stallNodeBase.removeNode()
     hoodId = ZoneUtil.getTrueZoneId(12000, 12000)
     zoneId = ZoneUtil.getTrueZoneId(12210, 12000)
     how = 'teleportIn'
     tunnelOriginPlaceHolder = render.attachNewNode('toph_12000_12210')
     tutorialFlag = 0
     requestStatus = {
         'loader': ZoneUtil.getLoaderName(zoneId),
         'where': ZoneUtil.getToonWhereName(zoneId),
         'how': how,
         'hoodId': hoodId,
         'zoneId': zoneId,
         'shardId': None,
         'tunnelOrigin': tunnelOriginPlaceHolder,
         'tutorial': tutorialFlag,
         'avId': -1
     }
     place = base.cr.playGame.getPlace()
     if place:
         place.requestLeave(requestStatus)
     return
Esempio n. 33
0
 def goToPartyFailed(self, reason):
     self.notify.debug("goToPartyFailed")
     failedToVisitAvId = self.doneStatus.get("avId")
     message = base.cr.partyManager.getGoToPartyFailedMessage(reason)
     self.notify.debug("goToPartyFailed, why =: %s" % message)
     self.ignore("gotLocalPartyZone")
     zoneId = base.localAvatar.lastHood
     loaderName = ZoneUtil.getLoaderName(zoneId)
     whereName = ZoneUtil.getToonWhereName(zoneId)
     base.localAvatar.setSystemMessage(0, message)
     self.fsm.request(
         "quietZone",
         [
             {
                 "loader": loaderName,
                 "where": whereName,
                 "how": "teleportIn",
                 "hoodId": zoneId,
                 "zoneId": zoneId,
                 "shardId": None,
             }
         ],
     )
     return Task.done
Esempio n. 34
0
    def addLinkTunnelHooks(self, hoodPart, nodeList, currentZoneId):
        assert (self.notify.debug("addLinkTunnelHooks()"))
        # hoodPart should be a SafeZone or a Town
        # Examine each vis group for tunnels

        # Return a list of the tunnelOriginPlaceHolders so the
        # caller can remove them when he is done with them
        tunnelOriginList = []

        for i in nodeList:
            linkTunnelNPC = i.findAllMatches("**/linktunnel*")
            for p in range(linkTunnelNPC.getNumPaths()):
                linkTunnel = linkTunnelNPC.getPath(p)
                name = linkTunnel.getName()
                # Assuming a name like: "linktunnel_mm_3456_DNARoot"
                nameParts = name.split("_")
                # Name parts will be something like ['linktunnel', 'mm', '3456', 'DNARoot']
                hoodStr = nameParts[1]
                zoneStr = nameParts[2]
                hoodId = self.getIdFromName(hoodStr)
                zoneId = int(zoneStr)
                hoodId = ZoneUtil.getTrueZoneId(hoodId, currentZoneId)
                zoneId = ZoneUtil.getTrueZoneId(zoneId, currentZoneId)

                # Get the actual collision sphere node
                linkSphere = linkTunnel.find("**/tunnel_trigger")
                # HACK: until cog tunnel trigger is renamed
                if linkSphere.isEmpty():
                    linkSphere = linkTunnel.find("**/tunnel_sphere")
                if not linkSphere.isEmpty():
                    # ...first time through this geometry.
                    # Rename it to make it unique
                    cnode = linkSphere.node()
                    cnode.setName("tunnel_trigger_" + hoodStr + "_" + zoneStr)
                    # It should be collidable to ghosts too
                    cnode.setCollideMask(ToontownGlobals.WallBitmask
                                         | ToontownGlobals.GhostBitmask)
                else:
                    # ...we've been through this already (i.e. we may have
                    # gone into a building and then went out again).
                    linkSphere = linkTunnel.find("**/tunnel_trigger_" +
                                                 hoodStr + "_" + zoneStr)
                    if linkSphere.isEmpty():
                        self.notify.error("tunnel_trigger not found")

                # Get the actual tunnel_origin
                tunnelOrigin = linkTunnel.find("**/tunnel_origin")
                if tunnelOrigin.isEmpty():
                    self.notify.error("tunnel_origin not found")
                # Create a place holder node
                tunnelOriginPlaceHolder = render.attachNewNode('toph_' +
                                                               hoodStr + '_' +
                                                               zoneStr)
                tunnelOriginList.append(tunnelOriginPlaceHolder)

                # Set the pos and hpr of the place holder
                tunnelOriginPlaceHolder.setPos(tunnelOrigin.getPos(render))
                tunnelOriginPlaceHolder.setHpr(tunnelOrigin.getHpr(render))

                # Determine based on hood id and zone id which hood and which
                # branch or safe zone to go to. Add a hook so that when the avatar
                # enters the tunnel, we are informed which hood it goes to and which zone
                hood = base.localAvatar.cr.playGame.hood
                # If we are in the tutorial, we will want to
                # teleport into the safe zone. Otherwise, we will
                # want to tunnel in.
                if ZoneUtil.tutorialDict:
                    how = "teleportIn"
                    tutorialFlag = 1
                else:
                    how = "tunnelIn"
                    tutorialFlag = 0
                hoodPart.accept("enter" + linkSphere.getName(),
                                hoodPart.handleEnterTunnel,
                                [{
                                    "loader": ZoneUtil.getLoaderName(zoneId),
                                    "where": ZoneUtil.getToonWhereName(zoneId),
                                    "how": how,
                                    "hoodId": hoodId,
                                    "zoneId": zoneId,
                                    "shardId": None,
                                    "tunnelOrigin": tunnelOriginPlaceHolder,
                                    "tutorial": tutorialFlag,
                                }])
        return tunnelOriginList