historical/toontown-classic.git/toontown/hood/LawbotHQDataAI.py
2024-01-16 11:20:27 -06:00

70 lines
3.9 KiB
Python

from direct.directnotify import DirectNotifyGlobal
import HoodDataAI
from toontown.toonbase import ToontownGlobals
from toontown.coghq import DistributedLawOfficeElevatorExtAI
from toontown.coghq import DistributedCogHQDoorAI
from toontown.building import DistributedDoorAI
from toontown.building import DoorTypes
from toontown.coghq import LobbyManagerAI
from toontown.building import DistributedBossElevatorAI
from toontown.suit import DistributedLawbotBossAI
from toontown.building import DistributedCJElevatorAI
from toontown.building import FADoorCodes
from toontown.building import DistributedBoardingPartyAI
class LawbotHQDataAI(HoodDataAI.HoodDataAI):
notify = DirectNotifyGlobal.directNotify.newCategory('LawbotHQDataAI')
def __init__(self, air, zoneId=None):
self.notify.debug('__init__: zoneId:%s' % zoneId)
hoodId = ToontownGlobals.LawbotHQ
if zoneId == None:
zoneId = hoodId
HoodDataAI.HoodDataAI.__init__(self, air, zoneId, hoodId)
return
def startup(self):
HoodDataAI.HoodDataAI.startup(self)
def makeOfficeElevator(index, antiShuffle=0, minLaff=0):
destZone = (ToontownGlobals.LawbotStageIntA, ToontownGlobals.LawbotStageIntB, ToontownGlobals.LawbotStageIntC, ToontownGlobals.LawbotStageIntD)[index]
elev = DistributedLawOfficeElevatorExtAI.DistributedLawOfficeElevatorExtAI(self.air, self.air.lawMgr, destZone, index, antiShuffle=0, minLaff=minLaff)
elev.generateWithRequired(ToontownGlobals.LawbotOfficeExt)
self.addDistObj(elev)
return elev.doId
mins = ToontownGlobals.FactoryLaffMinimums[2]
officeId0 = makeOfficeElevator(0, 0, mins[0])
officeId1 = makeOfficeElevator(1, 0, mins[1])
officeId2 = makeOfficeElevator(2, 0, mins[2])
officeId3 = makeOfficeElevator(3, 0, mins[3])
self.lobbyMgr = LobbyManagerAI.LobbyManagerAI(self.air, DistributedLawbotBossAI.DistributedLawbotBossAI)
self.lobbyMgr.generateWithRequired(ToontownGlobals.LawbotLobby)
self.addDistObj(self.lobbyMgr)
self.lobbyElevator = DistributedCJElevatorAI.DistributedCJElevatorAI(self.air, self.lobbyMgr, ToontownGlobals.LawbotLobby, antiShuffle=1)
self.lobbyElevator.generateWithRequired(ToontownGlobals.LawbotLobby)
self.addDistObj(self.lobbyElevator)
if simbase.config.GetBool('want-boarding-groups', 1):
self.boardingParty = DistributedBoardingPartyAI.DistributedBoardingPartyAI(self.air, [self.lobbyElevator.doId], 8)
self.boardingParty.generateWithRequired(ToontownGlobals.LawbotLobby)
def makeDoor(destinationZone, intDoorIndex, extDoorIndex, lock=0):
intDoor = DistributedCogHQDoorAI.DistributedCogHQDoorAI(self.air, 0, DoorTypes.INT_COGHQ, self.canonicalHoodId, 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()])
self.addDistObj(intDoor)
extDoor.generateWithRequired(self.canonicalHoodId)
extDoor.sendUpdate('setDoorIndex', [extDoor.getDoorIndex()])
self.addDistObj(extDoor)
makeDoor(ToontownGlobals.LawbotLobby, 0, 1, FADoorCodes.LB_DISGUISE_INCOMPLETE)
makeDoor(ToontownGlobals.LawbotOfficeExt, 0, 0)
officeIdList = [
officeId0, officeId1, officeId2, officeId3]
if simbase.config.GetBool('want-boarding-parties', 1):
self.officeBoardingParty = DistributedBoardingPartyAI.DistributedBoardingPartyAI(self.air, officeIdList, 4)
self.officeBoardingParty.generateWithRequired(ToontownGlobals.LawbotOfficeExt)