from toontown.toonbase.ToontownGlobals import * zoneUtilNotify = directNotify.newCategory('ZoneUtil') tutorialDict = None def isGoofySpeedwayZone(zoneId): return zoneId == 8000 def isCogHQZone(zoneId): return zoneId >= 10000 and zoneId < 15000 def isMintInteriorZone(zoneId): return zoneId in (CashbotMintIntA, CashbotMintIntB, CashbotMintIntC) def isDynamicZone(zoneId): return zoneId >= DynamicZonesBegin and zoneId < DynamicZonesEnd def getStreetName(branchId): global tutorialDict if tutorialDict: return StreetNames[20000][-1] else: return StreetNames[branchId][-1] def getLoaderName(zoneId): if tutorialDict: if zoneId == ToontownCentral: loaderName = 'safeZoneLoader' else: loaderName = 'townLoader' else: suffix = zoneId % 1000 if suffix >= 500: suffix -= 500 if isCogHQZone(zoneId): loaderName = 'cogHQLoader' elif suffix < 100: loaderName = 'safeZoneLoader' else: loaderName = 'townLoader' return loaderName def getBranchLoaderName(zoneId): return getLoaderName(getBranchZone(zoneId)) def getSuitWhereName(zoneId): where = getWhereName(zoneId, 0) return where def getToonWhereName(zoneId): where = getWhereName(zoneId, 1) return where def isPlayground(zoneId): whereName = getWhereName(zoneId, False) if whereName == 'cogHQExterior': return True else: return zoneId % 1000 == 0 and zoneId < DynamicZonesBegin def isHQ(zoneId): if zoneId == 2520 or zoneId == 1507 or zoneId == 3508 or zoneId == 4504 or zoneId == 5502 or zoneId == 7503 or zoneId == 9505: return True return False def isPetshop(zoneId): if zoneId == 2522 or zoneId == 1510 or zoneId == 3511 or zoneId == 4508 or zoneId == 5505 or zoneId == 7504 or zoneId == 9508: return True return False def getWhereName(zoneId, isToon): if tutorialDict: if zoneId in tutorialDict['interiors']: where = 'toonInterior' elif zoneId in tutorialDict['exteriors']: where = 'street' elif zoneId == ToontownCentral or zoneId == WelcomeValleyToken: where = 'playground' else: zoneUtilNotify.error('No known zone: ' + str(zoneId)) else: suffix = zoneId % 1000 suffix = suffix - suffix % 100 if isCogHQZone(zoneId): if suffix == 0: where = 'cogHQExterior' elif suffix == 100: where = 'cogHQLobby' elif suffix == 200: where = 'factoryExterior' elif getHoodId(zoneId) == LawbotHQ and suffix in (300, 400, 500, 600): where = 'stageInterior' elif getHoodId(zoneId) == BossbotHQ and suffix in (500, 600, 700): where = 'countryClubInterior' elif suffix >= 500: if getHoodId(zoneId) == SellbotHQ: if suffix == 600: where = 'megaCorpInterior' else: where = 'factoryInterior' elif getHoodId(zoneId) == CashbotHQ: where = 'mintInterior' else: zoneUtilNotify.error('unknown cogHQ interior for hood: ' + str(getHoodId(zoneId))) else: zoneUtilNotify.error('unknown cogHQ where: ' + str(zoneId)) elif suffix == 0: where = 'playground' elif suffix >= 500: if isToon: where = 'toonInterior' else: where = 'suitInterior' else: where = 'street' return where def getBranchZone(zoneId): if tutorialDict: branchId = tutorialDict['branch'] else: branchId = zoneId - zoneId % 100 if not isCogHQZone(zoneId): if zoneId % 1000 >= 500: branchId -= 500 return branchId def getCanonicalBranchZone(zoneId): return getBranchZone(getCanonicalZoneId(zoneId)) def isWelcomeValley(zoneId): return zoneId == WelcomeValleyToken or zoneId >= WelcomeValleyBegin and zoneId < WelcomeValleyEnd def getCanonicalZoneId(zoneId): if zoneId == WelcomeValleyToken: zoneId = ToontownCentral elif zoneId >= WelcomeValleyBegin and zoneId < WelcomeValleyEnd: zoneId = zoneId % 2000 if zoneId < 1000: zoneId = zoneId + ToontownCentral else: zoneId = zoneId - 1000 + GoofySpeedway return zoneId def getTrueZoneId(zoneId, currentZoneId): if zoneId >= WelcomeValleyBegin and zoneId < WelcomeValleyEnd or zoneId == WelcomeValleyToken: zoneId = getCanonicalZoneId(zoneId) if currentZoneId >= WelcomeValleyBegin and currentZoneId < WelcomeValleyEnd: hoodId = getHoodId(zoneId) offset = currentZoneId - currentZoneId % 2000 if hoodId == ToontownCentral: return zoneId - ToontownCentral + offset elif hoodId == GoofySpeedway: return zoneId - GoofySpeedway + offset + 1000 return zoneId def getHoodId(zoneId): if tutorialDict: hoodId = Tutorial else: hoodId = zoneId - zoneId % 1000 return hoodId def getSafeZoneId(zoneId): hoodId = getHoodId(zoneId) if hoodId in HQToSafezone: hoodId = HQToSafezone[hoodId] return hoodId def getCanonicalHoodId(zoneId): return getHoodId(getCanonicalZoneId(zoneId)) def getCanonicalSafeZoneId(zoneId): return getSafeZoneId(getCanonicalZoneId(zoneId)) def isInterior(zoneId): if tutorialDict: if zoneId in tutorialDict['interiors']: r = 1 else: r = 0 else: r = zoneId % 1000 >= 500 return r def overrideOn(branch, exteriorList, interiorList): global tutorialDict if tutorialDict: zoneUtilNotify.warning('setTutorialDict: tutorialDict is already set!') tutorialDict = {'branch': branch, 'exteriors': exteriorList, 'interiors': interiorList} def overrideOff(): global tutorialDict tutorialDict = None return def getWakeInfo(hoodId = None, zoneId = None): wakeWaterHeight = 0 showWake = 0 try: if hoodId is None: hoodId = base.cr.playGame.getPlaceId() if zoneId is None: zoneId = base.cr.playGame.getPlace().getZoneId() canonicalZoneId = getCanonicalZoneId(zoneId) if canonicalZoneId == DonaldsDock: wakeWaterHeight = DDWakeWaterHeight showWake = 1 elif canonicalZoneId == ToontownCentral: wakeWaterHeight = TTWakeWaterHeight showWake = 1 elif canonicalZoneId == OutdoorZone: wakeWaterHeight = OZWakeWaterHeight showWake = 1 elif hoodId == MyEstate: wakeWaterHeight = EstateWakeWaterHeight showWake = 1 except AttributeError: pass return (showWake, wakeWaterHeight) def canWearSuit(zoneId): zoneId = getCanonicalHoodId(zoneId) return zoneId >= DynamicZonesBegin or zoneId in [LawbotHQ, CashbotHQ, SellbotHQ, BossbotHQ]