from toontown.building import DoorTypes from toontown.building.DistributedBoardingPartyAI import DistributedBoardingPartyAI from toontown.coghq import DistributedCogHQDoorAI, DistributedCogHQExteriorDoorAI, LobbyManagerAI from toontown.toonbase import TTLocalizer, ToontownGlobals from toontown.toon import NPCToons class CogHQAI: notify = directNotify.newCategory('CogHQAI') notify.setInfo(True) def __init__( self, air, zoneId, lobbyZoneId, lobbyFADoorCode, lobbyElevatorCtor, bossCtor): self.air = air self.zoneId = zoneId self.lobbyZoneId = lobbyZoneId self.lobbyFADoorCode = lobbyFADoorCode self.lobbyElevatorCtor = lobbyElevatorCtor self.bossCtor = bossCtor self.lobbyMgr = None self.lobbyElevator = None self.boardingParty = None self.notify.info('Creating objects... ' + self.getLocationName(zoneId)) def getLocationName(self, zoneId): lookupTable = ToontownGlobals.hoodNameMap if (zoneId % 1000) != 0: lookupTable = TTLocalizer.GlobalStreetNames name = lookupTable.get(zoneId, '') if isinstance(name, str): return name return name[2] def startup(self): self.createLobbyManager() self.createLobbyElevator() self.extDoor = self.makeCogHQDoor(self.lobbyZoneId, 0, 0, self.lobbyFADoorCode) if simbase.config.GetBool('want-boarding-groups', True): self.createBoardingParty() self.npcs = NPCToons.createNpcsInZone(self.air, self.zoneId) def shutdown(self): for npc in self.npcs: npc.requestDelete() del self.npcs def createLobbyManager(self): self.lobbyMgr = LobbyManagerAI.LobbyManagerAI(self.air, self.bossCtor) self.lobbyMgr.generateWithRequired(self.lobbyZoneId) def createLobbyElevator(self): self.lobbyElevator = self.lobbyElevatorCtor( self.air, self.lobbyMgr, self.lobbyZoneId, antiShuffle=1) self.lobbyElevator.generateWithRequired(self.lobbyZoneId) def makeCogHQDoor(self, destinationZone, intDoorIndex, extDoorIndex, lock=0): intDoor = DistributedCogHQDoorAI.DistributedCogHQDoorAI( self.air, 0, DoorTypes.INT_COGHQ, self.zoneId, doorIndex=intDoorIndex, lockValue=lock) intDoor.zoneId = destinationZone extDoor = DistributedCogHQDoorAI.DistributedCogHQDoorAI( self.air, 0, DoorTypes.EXT_COGHQ, destinationZone, doorIndex=extDoorIndex, lockValue=lock) extDoor.setOtherDoor(intDoor) intDoor.setOtherDoor(extDoor) intDoor.generateWithRequired(destinationZone) intDoor.sendUpdate('setDoorIndex', [intDoor.getDoorIndex()]) extDoor.generateWithRequired(self.zoneId) extDoor.sendUpdate('setDoorIndex', [extDoor.getDoorIndex()]) return extDoor def createBoardingParty(self): self.boardingParty = DistributedBoardingPartyAI(self.air, [self.lobbyElevator.doId], 8) self.boardingParty.generateWithRequired(self.lobbyZoneId)