def startScreen(*args): self.screenObject = args[0] if not self.screenObject: return self.screenObject.reparentTo(render) text = "Clarabelle's Cattlelog\nis now open!\nHead to your estate\nand call her up!" if ZoneUtil.getHoodId(zoneId) == ToontownGlobals.MinniesMelodyland: self.screenObject.reparentTo( self.cr.playGame.getPlace().loader.geom.find( '**/center_icon')) self.screenObject.setPos( self.zone2pos.get(ZoneUtil.getHoodId(zoneId), (0, 0, 6))) self.screenObject.setHpr(-90, 0, 0) self.counter = DirectLabel( parent=render, pos=(0, 0, 0), relief=None, text=text, text_scale=1, text_fg=(1, 1, 1, 1), text_align=TextNode.ACenter, text_font=ToontownGlobals.getMinnieFont()) self.counter.reparentTo(self.screenObject) self.counter.setPos( self.screenObject.find("**/front_screen").getPos() + Point3(0.0, -1.5, 0.3)) self.counterback = DirectLabel( parent=render, pos=(0, 0, 0), relief=None, text=text, text_scale=1, text_fg=(1, 1, 1, 1), text_align=TextNode.ACenter, text_font=ToontownGlobals.getMinnieFont()) self.counterback.reparentTo(self.screenObject) self.counterback.setPos( self.screenObject.find("**/back_screen").getPos() + Point3(0.0, 1.5, 0.3)) self.counterback.setHpr(180, 0, 0) self.bob = Sequence( LerpPosInterval(nodePath=self.screenObject, duration=3.2, pos=(self.screenObject.getX(), self.screenObject.getY(), self.screenObject.getZ() + 1.65), blendType='easeInOut'), Sequence( Wait(0.050), LerpPosInterval(nodePath=self.screenObject, duration=3.0, pos=(self.screenObject.getX(), self.screenObject.getY(), self.screenObject.getZ()), blendType='easeInOut'), Sequence(Wait(0.050)))) self.bob.loop()
def getSky(self): if ZoneUtil.getHoodId(self.extZoneId) == ToontownGlobals.DonaldsDreamland: skyModel = loader.loadModel('phase_8/models/props/DL_sky') elif ZoneUtil.getHoodId(self.extZoneId) == ToontownGlobals.MinniesMelodyland: skyModel = loader.loadModel('phase_6/models/props/MM_sky') else: skyModel = loader.loadModel('phase_3.5/models/props/BR_sky') return skyModel
def avatarSetZone(self, avId, zoneId): lastZoneId = self.avatarZones.get(avId) if lastZoneId == zoneId: return lastZoneId if zoneId == None: self.notify.debug("Avatar %s has left the shard." % (avId)) del self.avatarZones[avId] self.ignore(self.air.getAvatarExitEvent(avId)) else: self.notify.debug("Avatar %s is now in zone %s." % (avId, zoneId)) # First, add the avatar into his/her new zone. We must do # this first so we don't risk momentarily bringing the # hood population to 0. hoodId = ZoneUtil.getHoodId(zoneId) # if this is a GS hoodId, just grab the TT hood if (hoodId % 2000) < 1000: hood = self.welcomeValleys.get(hoodId) else: hood = self.welcomeValleys.get(hoodId - 1000) if hood: hood[0].incrementPopulation(zoneId, 1) if (hood == self.newHood ) and hood[0].getPgPopulation() >= PGstable: # This is now a stable hood. self.__newToStable(hood) self.avatarZones[avId] = zoneId if lastZoneId == None: # This is the first time we have heard from this avatar. self.acceptOnce(self.air.getAvatarExitEvent(avId), self.avatarLogout, extraArgs=[avId]) else: # Now, remove the avatar from his/her previous zone. lastHoodId = ZoneUtil.getHoodId(lastZoneId) # if this is a GS hoodId, just grab the TT hood if (lastHoodId % 2000) < 1000: hood = self.welcomeValleys.get(lastHoodId) else: hood = self.welcomeValleys.get(lastHoodId - 1000) if hood: hood[0].incrementPopulation(lastZoneId, -1) if hood[0].getHoodPopulation() == 0: self.__hoodIsEmpty(hood) elif (hood != self.newHood) and not hood[0].hasRedirect() and \ hood[0].getPgPopulation() < PGminimum: self.__stableToRemoving(hood) return lastZoneId
def enteringAGolfCourse(self, status): if not status['where'] == 'golfcourse': return 0 if ZoneUtil.isDynamicZone(status['zoneId']): return status['hoodId'] == self.hood.hoodId else: return ZoneUtil.getHoodId(status['zoneId']) == self.hood.hoodId
def enteringARace(self, status): if not status['where'] == 'racetrack': return 0 if ZoneUtil.isDynamicZone(status['zoneId']): return status['hoodId'] == self.hood.hoodId else: return ZoneUtil.getHoodId(status['zoneId']) == self.hood.hoodId
def announceGenerate(self): DistributedObject.DistributedObject.announceGenerate(self) base.cr.discordManager.setInfo( base.cr.discordManager.getState(), TTLocalizer.DiscordFieldOffice, ToontownGlobals.Zone2String.get(ZoneUtil.getHoodId(self.zoneId)), None, None, None, self.zoneId) return
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, } ], )
def doPostAnnounceGenerate(self): flatDoorTypes = [DoorTypes.INT_STANDARD, DoorTypes.INT_HQ] if self.doorType in flatDoorTypes: self.bHasFlat = True else: self.bHasFlat = not self.findDoorNode('door*flat', True).isEmpty() self.hideDoorParts() self.setTriggerName() # Check if we are dealing with a DDL HQ door... if self.doorType == DoorTypes.EXT_HQ and \ ZoneUtil.getHoodId(self.zoneId) == ToontownGlobals.DonaldsDreamland: # Get the doorTrigger... building = self.getBuilding() doorTrigger = building.find('**/%s' % self.getTriggerName()) # Check if the doorTrigger hasn't been 'fixed' already... if not doorTrigger.getTag('fixed'): # Reposition the doorTrigger based on its index... if self.doorIndex == 0: doorTrigger.setY(doorTrigger, 0.25) else: doorTrigger.setY(doorTrigger, -0.25) # We are done :) Tag the door as fixed. doorTrigger.setTag('fixed', 'true') self.accept(self.getEnterTriggerEvent(), self.doorTrigger) self.acceptOnce('clearOutToonInterior', self.doorTrigger) self.setupNametag()
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, }])
def avatarRequestZone(self, avId, origZoneId): # This services a redirect-zone request for a particular # avatar. The client is requesting to go to the indicated # zoneId, which should be a WelcomeValley zoneId; the AI # should choose which particular WelcomeValley to direct the # client to. if not ZoneUtil.isWelcomeValley(origZoneId): # All requests for static zones are returned unchanged. return origZoneId origHoodId = ZoneUtil.getHoodId(origZoneId) hood = self.welcomeValleys.get(origHoodId) if not hood: # If we don't know this hood, choose a new one. hood = self.chooseWelcomeValley() if not hood: self.notify.warning("Could not create new WelcomeValley hood for avatar %s." % (avId)) zoneId = ZoneUtil.getCanonicalZoneId(origZoneId) else: # use TTC hoodId hoodId = hood[0].getRedirect().zoneId zoneId = ZoneUtil.getTrueZoneId(origZoneId, hoodId) # Even though the client might choose not to go to the # indicated zoneId for some reason, we will consider the # client as having gone there immediately, for the purposes of # balancing. If the client goes somewhere else instead, it # will tell us that and we can correct this. self.avatarSetZone(avId, zoneId) return zoneId
def placeDone(self): self.requestStatus = self.place.doneStatus status = self.place.doneStatus if status.get('shardId') == None and self.isInThisHq(status): self.unloadPlaceGeom() zoneId = status['zoneId'] self.loadPlaceGeom(zoneId) self.fsm.request('quietZone', [status]) if 'mintId' in status: zoneId = status['mintId'] elif 'stageId' in status: zoneId = status['stageId'] elif 'countryClubId' in status: zoneId = status['countryClubId'] elif status['where'] == 'factoryInterior': zoneId = ToontownGlobals.SellbotFactoryInt if not ZoneUtil.isDynamicZone(zoneId): hoodZoneId = zoneId if zoneId not in (ToontownGlobals.SellbotFactoryExt, ToontownGlobals.LawbotOfficeExt): hoodZoneId = ZoneUtil.getHoodId(zoneId) base.cr.discordManager.setInfo( base.cr.discordManager.getState(), None, ToontownGlobals.Zone2String.get(hoodZoneId), None, None, None, zoneId) else: self.doneStatus = status messenger.send(self.doneEvent) return
def enter(self, requestStatus): self.zoneId = requestStatus['zoneId'] self.fsm.enterInitialState() messenger.send('enterToonInterior') self.accept('doorDoneEvent', self.handleDoorDoneEvent) self.accept('DistributedDoor_doorTrigger', self.handleDoorTrigger) volume = requestStatus.get('musicVolume', 0.7) if self.zoneId in (ToontownGlobals.Kongdominium, ToontownGlobals.PrivateServerCafe): if self.zoneId == ToontownGlobals.Kongdominium: type = 0 elif self.zoneId == ToontownGlobals.PrivateServerCafe: type = 1 else: type = -1 taskMgr.add(self.customMusicTask, 'custom-music-task', extraArgs=[volume, type], appendTask=True) else: base.playMusic(self.loader.activityMusic, looping=1, volume=volume) self._telemLimiter = TLGatherAllAvs('ToonInterior', RotationLimitToH) NametagGlobals.setMasterArrowsOn(1) self.fsm.request(requestStatus['how'], [requestStatus]) zoneId = self.zoneId if not base.localAvatar.tutorialAck: zoneId = 20002 base.cr.discordManager.setInfo( base.cr.discordManager.getState(), None, ToontownGlobals.Zone2String.get(ZoneUtil.getHoodId(zoneId)), None, None, None, zoneId) return
def enteringARace(self, status): if not status["where"] == "golfcourse": return 0 if ZoneUtil.isDynamicZone(status["zoneId"]): return status["hoodId"] == self.hood.hoodId else: return ZoneUtil.getHoodId(status["zoneId"]) == self.hood.hoodId
def enter(self, requestStatus, visibilityFlag=1, arrowsOn=1): teleportDebug(requestStatus, 'Street.enter(%s)' % (requestStatus, )) self._ttfToken = None self.fsm.enterInitialState() base.playMusic(self.loader.music, looping=1, volume=0.8) self.loader.geom.reparentTo(render) if visibilityFlag: self.visibilityOn() base.localAvatar.setGeom(self.loader.geom) base.localAvatar.setOnLevelGround(1) self._telemLimiter = TLGatherAllAvs('Street', RotationLimitToH) NametagGlobals.setMasterArrowsOn(arrowsOn) def __lightDecorationOn__(): geom = base.cr.playGame.getPlace().loader.geom self.halloweenLights = geom.findAllMatches('**/*light*') self.halloweenLights += geom.findAllMatches('**/*lamp*') self.halloweenLights += geom.findAllMatches('**/prop_snow_tree*') for light in self.halloweenLights: light.setColorScaleOff(1) newsManager = base.cr.newsManager if newsManager: holidayIds = base.cr.newsManager.getDecorationHolidayId() if (ToontownGlobals.HALLOWEEN_COSTUMES in holidayIds or ToontownGlobals.SPOOKY_COSTUMES in holidayIds) and self.loader.hood.spookySkyFile: lightsOff = Sequence( LerpColorScaleInterval(base.cr.playGame.hood.loader.geom, 0.1, Vec4(0.55, 0.55, 0.65, 1)), Func(self.loader.hood.startSpookySky)) lightsOff.start() else: self.loader.hood.startSky() lightsOn = LerpColorScaleInterval( base.cr.playGame.hood.loader.geom, 0.1, Vec4(1, 1, 1, 1)) lightsOn.start() else: self.loader.hood.startSky() lightsOn = LerpColorScaleInterval( base.cr.playGame.hood.loader.geom, 0.1, Vec4(1, 1, 1, 1)) lightsOn.start() self.accept('doorDoneEvent', self.handleDoorDoneEvent) self.accept('DistributedDoor_doorTrigger', self.handleDoorTrigger) zoneId = requestStatus['zoneId'] self.enterZone(zoneId) self.tunnelOriginList = base.cr.hoodMgr.addLinkTunnelHooks( self, self.loader.nodeList, self.zoneId) self.fsm.request(requestStatus['how'], [requestStatus]) self.replaceStreetSignTextures() zoneId = ZoneUtil.getBranchZone(zoneId) base.cr.discordManager.setInfo( base.cr.discordManager.getState(), None, ToontownGlobals.Zone2String.get(ZoneUtil.getHoodId(zoneId)), None, None, None, zoneId) return
def getLargeImageTextByZoneId(self, zoneId): zoneId = ZoneUtil.getHoodId(zoneId) if zoneId in ToontownGlobals.hoodNameMap.keys(): return ToontownGlobals.hoodNameMap[zoneId][2] else: if zoneId in TTLocalizer.zone2TitleDict.keys(): return TTLocalizer.zone2TitleDict[zoneId][0] if not ZoneUtil.isDynamicZone(zoneId): return TTLocalizer.GlobalStreetNames[zoneId][2] return
def getRequestStatus(self): zoneId = self.otherZoneId request = {'loader': ZoneUtil.getBranchLoaderName(zoneId), 'where': ZoneUtil.getToonWhereName(zoneId), 'how': 'doorIn', 'hoodId': ZoneUtil.getHoodId(zoneId), 'zoneId': zoneId, 'shardId': None, 'avId': -1, 'allowRedirect': 0, 'doorDoId': self.otherDoId} return request
def load(self, zoneId): self.zoneId = zoneId self.parentFSMState.addChild(self.fsm) self.loadBattleAnims() self.branchZone = ZoneUtil.getBranchZone(zoneId) self.canonicalBranchZone = ZoneUtil.getCanonicalBranchZone(zoneId) self.music = base.loadMusic(self.musicFile) self.activityMusic = base.loadMusic(self.activityMusicFile) self.battleMusic = base.loadMusic(self.zone2music.get(ZoneUtil.getHoodId(zoneId), 'phase_9/audio/bgm/encntr_suit_ttc.ogg'))#'phase_3.5/audio/bgm/encntr_general_bg.ogg')) self.townBattle = TownBattle.TownBattle(self.townBattleDoneEvent) self.townBattle.load()
def enterReward(self, ts = 0): base.localAvatar.b_setParent(ToontownGlobals.SPHidden) request = {'loader': ZoneUtil.getBranchLoaderName(self.extZoneId), 'where': ZoneUtil.getToonWhereName(self.extZoneId), 'how': 'elevatorIn', 'hoodId': ZoneUtil.getHoodId(self.extZoneId), 'zoneId': self.extZoneId, 'shardId': None, 'avId': base.localAvatar.doId, 'bldgDoId': self.distBldgDoId} messenger.send('DSIDoneEvent', [request])
def enterReward(self, ts = 0): base.localAvatar.b_setParent(ToontownGlobals.SPHidden) request = {'loader': ZoneUtil.getBranchLoaderName(self.extZoneId), 'where': ZoneUtil.getToonWhereName(self.extZoneId), 'how': 'elevatorIn', 'hoodId': ZoneUtil.getHoodId(self.extZoneId), 'zoneId': self.extZoneId, 'shardId': None, 'avId': -1, 'bldgDoId': self.distBldgDoId} messenger.send('DSIDoneEvent', [request]) return
def startScreen(*args): self.screenObject = args[0] self.screenObject.reparentTo(render) if ZoneUtil.getHoodId(zoneId) == ToontownGlobals.MinniesMelodyland: self.screenObject.reparentTo( self.cr.playGame.getPlace().loader.geom.find( '**/center_icon')) self.screenObject.setPos( self.zone2pos.get(ZoneUtil.getHoodId(zoneId), (0, 0, 6))) self.screenObject.setHpr(-90, 0, 0) self.counter = DirectLabel( parent=render, pos=(0, 0, 0), relief=None, text= '10 cogs destroyed = $0.01\nto Child\'s Play Charity\n(Max $15,000)\nCheck website for more details!', text_scale=1, text_fg=(1, 1, 1, 1), text_align=TextNode.ACenter, text_font=ToontownGlobals.getMinnieFont()) self.counter.reparentTo(self.screenObject) self.counter.setPos( self.screenObject.find("**/front_screen").getPos() + Point3(0.0, -1.5, 0.3)) self.counterback = DirectLabel( parent=render, pos=(0, 0, 0), relief=None, text= '10 cogs destroyed = $0.01\nto Child\'s Play Charity\n(Max $15,000)\nCheck website for more details!', text_scale=1, text_fg=(1, 1, 1, 1), text_align=TextNode.ACenter, text_font=ToontownGlobals.getMinnieFont()) self.counterback.reparentTo(self.screenObject) self.counterback.setPos( self.screenObject.find("**/back_screen").getPos() + Point3(0.0, 1.5, 0.3)) self.counterback.setHpr(180, 0, 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 __doorsClosed(self, zoneId): if self.localToonOnBoard: hoodId = ZoneUtil.getHoodId(zoneId) loader, where = self._getDoorsClosedInfo() doneStatus = {'loader': loader, 'where': where, 'hoodId': hoodId, 'zoneId': zoneId, 'shardId': None} elevator = self.elevatorFSM del self.elevatorFSM elevator.signalDone(doneStatus) base.camLens.setMinFov(ToontownGlobals.CBElevatorFov/(4./3.))
def __doorsClosed(self, zoneId): if self.localToonOnBoard: hoodId = ZoneUtil.getHoodId(zoneId) loader, where = self._getDoorsClosedInfo() doneStatus = {'loader': loader, 'where': where, 'hoodId': hoodId, 'zoneId': zoneId, 'shardId': None} elevator = self.elevatorFSM del self.elevatorFSM elevator.signalDone(doneStatus) return
def __doorsClosed(self, zoneId): if self.localToonOnBoard: hoodId = ZoneUtil.getHoodId(zoneId) loader, where = self._getDoorsClosedInfo() doneStatus = {'loader': loader, 'where': where, 'hoodId': hoodId, 'zoneId': zoneId, 'shardId': None} elevator = self.elevatorFSM del self.elevatorFSM elevator.signalDone(doneStatus) base.camLens.setMinFov(ToontownGlobals.CBElevatorFov / (4.0 / 3.0))
def exitCogdoBuilding(self): if base.localAvatar.hp < 0: return base.localAvatar.b_setParent(ToontownGlobals.SPHidden) request = {'loader': ZoneUtil.getBranchLoaderName(self.extZoneId), 'where': ZoneUtil.getToonWhereName(self.extZoneId), 'how': 'elevatorIn', 'hoodId': ZoneUtil.getHoodId(self.extZoneId), 'zoneId': self.extZoneId, 'shardId': None, 'avId': -1, 'bldgDoId': self.distBldgDoId} messenger.send('DSIDoneEvent', [request])
def enterReward(self, ts=0): base.localAvatar.b_setParent(ToontownGlobals.SPHidden) request = { "loader": ZoneUtil.getBranchLoaderName(self.extZoneId), "where": ZoneUtil.getToonWhereName(self.extZoneId), "how": "elevatorIn", "hoodId": ZoneUtil.getHoodId(self.extZoneId), "zoneId": self.extZoneId, "shardId": None, "avId": base.localAvatar.doId, "bldgDoId": self.distBldgDoId, } messenger.send("DSIDoneEvent", [request]) return
def _DistributedElevator__doorsClosed(self, zoneId): if self.localToonOnBoard: hoodId = ZoneUtil.getHoodId(zoneId) (loader, where) = self._getDoorsClosedInfo() doneStatus = { 'loader': loader, 'where': where, 'hoodId': hoodId, 'zoneId': zoneId, 'shardId': None } elevator = self.elevatorFSM del self.elevatorFSM elevator.signalDone(doneStatus)
def performInitialPlayerCheck(self, task): if self.eventMode == ToontownGlobals.EventManagerStrictMode: for toonId in self.toons: toon = self.air.doId2do.get(toonId) if toon: if toon.zoneId != ToontownGlobals.ToontownCentral: self.sendUpdateToAvatarId(toonId, 'requestTeleport', [ '', '', ZoneUtil.getHoodId( ToontownGlobals.ToontownCentral), ToontownGlobals.ToontownCentral, 0 ]) return task.done
def load(self, zoneId): if config.GetBool('custom-battle-music', False) or ZoneUtil.getHoodId( zoneId ) == OldDaisyGardens and base.cr.currentEpisode == 'squirting_flower': self.battleMusic = base.loader.loadMusic( 'phase_14.5/audio/bgm/DG_battle.ogg') TownLoader.TownLoader.load(self, zoneId) Suit.loadSuits(3) dnaFile = 'phase_8/dna/old_daisys_garden_' + str( self.canonicalBranchZone) + '.jazz' self.createHood(dnaFile) if hasattr(self, 'loader'): tunnel = self.loader.geom.find('**/prop_safe_zone_tunnel_dummy') if tunnel: tunnel.reparentTo(hidden)
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}])
def exitCogdoBuilding(self): if base.localAvatar.hp < 0: return base.localAvatar.b_setParent(ToontownGlobals.SPHidden) request = { "loader": ZoneUtil.getBranchLoaderName(self.extZoneId), "where": ZoneUtil.getToonWhereName(self.extZoneId), "how": "elevatorIn", "hoodId": ZoneUtil.getHoodId(self.extZoneId), "zoneId": self.extZoneId, "shardId": None, "avId": -1, "bldgDoId": self.distBldgDoId, } messenger.send("DSIDoneEvent", [request]) return
def __doorsClosed(self, zoneId): assert (self.notify.debug('doorsClosed()')) if (self.localToonOnBoard): hoodId = ZoneUtil.getHoodId(zoneId) loader, where = self._getDoorsClosedInfo() doneStatus = { 'loader': loader, 'where': where, 'hoodId': hoodId, 'zoneId': zoneId, 'shardId': None, } elevator = self.elevatorFSM #self.getPlaceElevator() del self.elevatorFSM elevator.signalDone(doneStatus)
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 getRequestStatus(self): zoneId = self.otherZoneId # We must set allowRedirect to 0 because we expect to meet # our other door on the other side. request = { "loader": ZoneUtil.getBranchLoaderName(zoneId), "where": ZoneUtil.getToonWhereName(zoneId), "how": "doorIn", "hoodId": ZoneUtil.getHoodId(zoneId), "zoneId": zoneId, "shardId": None, "avId": -1, "allowRedirect": 0, "doorDoId": self.otherDoId } return request
def __doorsClosed(self, zoneId): if self.localToonOnBoard: self.localAvatar.stopGlitchKiller() hoodId = ZoneUtil.getHoodId(zoneId) loader = 'suitInterior' where = 'suitInterior' if base.cr.wantCogdominiums: loader = 'cogdoInterior' where = 'cogdoInterior' doneStatus = {'loader': loader, 'where': where, 'hoodId': hoodId, 'zoneId': zoneId, 'shardId': None} elevator = self.elevatorFSM del self.elevatorFSM elevator.signalDone(doneStatus)
def enterReward(self, ts=0): assert(self.notify.debug('enterReward()')) base.localAvatar.b_setParent(ToontownGlobals.SPHidden) request = { "loader": ZoneUtil.getBranchLoaderName(self.extZoneId), "where": ZoneUtil.getToonWhereName(self.extZoneId), "how": "elevatorIn", "hoodId": ZoneUtil.getHoodId(self.extZoneId), "zoneId": self.extZoneId, "shardId": None, "avId": -1, "bldgDoId": self.distBldgDoId } # Presumably, suitInterior.py has hung a hook waiting for # this request. I mimicked what DistributedDoor was doing. messenger.send("DSIDoneEvent", [request]) return None
def enter(self, slowWalk=0): zoneId = base.localAvatar.zoneId hoodId = ZoneUtil.getHoodId(zoneId) if hoodId != ToontownGlobals.Tutorial: # If we're not in the tutorial... base.localAvatar.startPosHprBroadcast() base.localAvatar.startBlink() base.localAvatar.attachCamera() shouldPush = 1 if len(base.localAvatar.cameraPositions) > 0: shouldPush = not base.localAvatar.cameraPositions[ base.localAvatar.cameraIndex][4] base.localAvatar.startUpdateSmartCamera(shouldPush) base.localAvatar.showName() base.localAvatar.collisionsOn() base.localAvatar.startGlitchKiller() base.localAvatar.enableAvatarControls()
def __doorsClosed(self, zoneId): if self.localToonOnBoard: self.localAvatar.stopGlitchKiller() hoodId = ZoneUtil.getHoodId(zoneId) loader = 'suitInterior' where = 'suitInterior' if base.cr.wantCogdominiums: loader = 'cogdoInterior' where = 'cogdoInterior' doneStatus = {'loader': loader, 'where': where, 'hoodId': hoodId, 'zoneId': zoneId, 'shardId': None} elevator = self.elevatorFSM del self.elevatorFSM elevator.signalDone(doneStatus) return
def doPostAnnounceGenerate(self): flatDoorTypes = [DoorTypes.INT_STANDARD, DoorTypes.INT_HQ] if self.doorType in flatDoorTypes: self.bHasFlat = True else: self.bHasFlat = not self.findDoorNode('door*flat', True).isEmpty() self.hideDoorParts() self.setTriggerName() if self.doorType == DoorTypes.EXT_HQ and ZoneUtil.getHoodId(self.zoneId) == ToontownGlobals.DonaldsDreamland: building = self.getBuilding() doorTrigger = building.find('**/%s' % self.getTriggerName()) if not doorTrigger.getTag('fixed'): doorTrigger.setY(doorTrigger, 0.25 if not self.doorIndex else -0.25) doorTrigger.setTag('fixed', 'true') self.accept(self.getEnterTriggerEvent(), self.doorTrigger) self.acceptOnce('clearOutToonInterior', self.doorTrigger) self.setupNametag()
def isInThisHq(self, status): if ZoneUtil.isDynamicZone(status['zoneId']): return status['hoodId'] == self.hood.hoodId else: return ZoneUtil.getHoodId(status['zoneId']) == self.hood.hoodId