def createInitialSuitBuildings(self): if self.buildingMgr is None: return # If we aren't at our minimum number of buildings, let's spawn some! suitBlockCount = len(self.buildingMgr.getSuitBlocks()) if suitBlockCount < self.targetNumSuitBuildings: for _ in xrange(self.targetNumSuitBuildings - suitBlockCount): blockNumber = random.choice(self.buildingMgr.getToonBlocks()) building = self.buildingMgr.getBuilding(blockNumber) if building is None: continue if NPCToons.isZoneProtected(building.getExteriorAndInteriorZoneId()[1]): continue suitName = self.air.suitInvasionManager.getInvadingCog()[0] if suitName is None: suitName = self.defaultSuitName suitType = None suitTrack = None if suitName is not None: suitType = SuitDNA.getSuitType(suitName) suitTrack = SuitDNA.getSuitDept(suitName) (suitLevel, suitType, suitTrack) = self.pickLevelTypeAndTrack(None, suitType, suitTrack) building.suitTakeOver(suitTrack, suitLevel, None) # Save the building manager's state: self.buildingMgr.save()
def __makeResistanceToon(self): if self.resistanceToon: return npc = Toon.Toon() npc.setName(TTLocalizer.ResistanceToonName) npc.setPickable(0) npc.setPlayerType(NametagGroup.CCNonPlayer) dna = ToonDNA.ToonDNA() dna.newToonRandom(11237, 'f', 1) dna.head = 'pls' npc.setDNAString(dna.makeNetString()) npc.animFSM.request('neutral') self.resistanceToon = npc self.resistanceToon.setPosHpr(*ToontownGlobals.CashbotRTBattleOneStartPosHpr) state = random.getstate() random.seed(self.doId) self.resistanceToon.suitType = SuitDNA.getRandomSuitByDept('m') random.setstate(state) self.fakeGoons = [] for i in range(self.numFakeGoons): goon = DistributedCashbotBossGoon.DistributedCashbotBossGoon(base.cr) goon.doId = -1 - i goon.setBossCogId(self.doId) goon.generate() goon.announceGenerate() self.fakeGoons.append(goon) self.__hideFakeGoons()
def announceGenerate(self): DistributedBossCog.DistributedBossCog.announceGenerate(self) self.setName(TTLocalizer.CashbotBossName) nameInfo = TTLocalizer.BossCogNameWithDept % {'name': self.name, 'dept': SuitDNA.getDeptFullname(self.style.dept)} self.setDisplayName(nameInfo) target = CollisionSphere(2, 0, 0, 3) targetNode = CollisionNode('headTarget') targetNode.addSolid(target) targetNode.setCollideMask(ToontownGlobals.PieBitmask) self.headTarget = self.neck.attachNewNode(targetNode) shield = CollisionSphere(0, 0, 0.8, 7) shieldNode = CollisionNode('shield') shieldNode.addSolid(shield) shieldNode.setCollideMask(ToontownGlobals.PieBitmask) shieldNodePath = self.pelvis.attachNewNode(shieldNode) self.heldObject = None self.bossDamage = 0 self.loadEnvironment() self.__makeResistanceToon() self.physicsMgr = PhysicsManager() integrator = LinearEulerIntegrator() self.physicsMgr.attachLinearIntegrator(integrator) fn = ForceNode('gravity') self.fnp = self.geom.attachNewNode(fn) gravity = LinearVectorForce(0, 0, -32) fn.addForce(gravity) self.physicsMgr.addLinearForce(gravity) localAvatar.chatMgr.chatInputSpeedChat.addCFOMenu() global OneBossCog if OneBossCog != None: self.notify.warning('Multiple BossCogs visible.') OneBossCog = self return
def getSuitName(self): if self.suitDeptIndex is not None: if self.suitTypeIndex is not None: return SuitDNA.getSuitName(self.suitDeptIndex, self.suitTypeIndex) else: return SuitDNA.suitDepts[self.suitDeptIndex] else: return SuitDNA.suitHeadTypes[0]
def startTakeOver(self): if not self.SUIT_BUILDINGS: return blockNumber = self.buildingDestination if not self.sp.buildingMgr.isSuitBlock(blockNumber): self.notify.debug('Suit %d taking over building %d in %d' % (self.getDoId(), blockNumber, self.zoneId)) difficulty = self.getActualLevel() - 1 if self.buildingDestinationIsCogdo: self.sp.cogdoTakeOver(blockNumber, difficulty, self.buildingHeight) else: dept = SuitDNA.getSuitDept(self.dna.name) self.sp.suitTakeOver(blockNumber, dept, difficulty, self.buildingHeight)
def __init__(self, avatar): AvatarPanel.AvatarPanel.__init__(self, avatar, FriendsListPanel=FriendsListPanel) self.avName = avatar.getName() gui = loader.loadModel('phase_3.5/models/gui/suit_detail_panel') self.frame = DirectFrame( geom=gui.find('**/avatar_panel'), relief=None, geom_scale=0.21, pos=(-0.23, 0, -0.44), parent=base.a2dTopRight) disabledImageColor = Vec4(1, 1, 1, 0.4) text0Color = Vec4(1, 1, 1, 1) text1Color = Vec4(0.5, 1, 0.5, 1) text2Color = Vec4(1, 1, 0.5, 1) text3Color = Vec4(1, 1, 1, 0.2) self.head = self.frame.attachNewNode('head') for part in avatar.headParts: copyPart = part.copyTo(self.head) copyPart.setDepthTest(1) copyPart.setDepthWrite(1) p1 = Point3() p2 = Point3() self.head.calcTightBounds(p1, p2) d = p2 - p1 biggest = max(d[0], d[1], d[2]) s = 0.3 / biggest self.head.setPosHprScale(0, 0, 0, 180, 0, 0, s, s, s) self.nameLabel = DirectLabel(parent=self.frame, pos=(0.0125, 0, 0.36), relief=None, text=self.avName, text_font=avatar.getFont(), text_fg=Vec4(0, 0, 0, 1), text_pos=(0, 0), text_scale=0.047, text_wordwrap=7.5, text_shadow=(1, 1, 1, 1)) level = avatar.getActualLevel() dept = SuitDNA.getSuitDeptFullname(avatar.dna.name) self.levelLabel = DirectLabel(parent=self.frame, pos=(0, 0, -0.1), relief=None, text=TTLocalizer.AvatarPanelCogLevel % level, text_font=avatar.getFont(), text_align=TextNode.ACenter, text_fg=Vec4(0, 0, 0, 1), text_pos=(0, 0), text_scale=0.05, text_wordwrap=8.0) corpIcon = avatar.corpMedallion.copyTo(hidden) corpIcon.iPosHprScale() self.corpIcon = DirectLabel(parent=self.frame, geom=corpIcon, geom_scale=0.13, pos=(0, 0, -0.175), relief=None) corpIcon.removeNode() self.deptLabel = DirectLabel(parent=self.frame, pos=(0, 0, -0.28), relief=None, text=dept, text_font=avatar.getFont(), text_align=TextNode.ACenter, text_fg=Vec4(0, 0, 0, 1), text_pos=(0, 0), text_scale=0.05, text_wordwrap=8.0) self.closeButton = DirectButton(parent=self.frame, relief=None, pos=(0.0, 0, -0.36), text=TTLocalizer.AvatarPanelCogDetailClose, text_font=avatar.getFont(), text0_fg=Vec4(0, 0, 0, 1), text1_fg=Vec4(0.5, 0, 0, 1), text2_fg=Vec4(1, 0, 0, 1), text_pos=(0, 0), text_scale=0.05, command=self.__handleClose) gui.removeNode() menuX = -0.05 menuScale = 0.064 base.localAvatar.obscureFriendsListButton(1) self.frame.show() messenger.send('avPanelDone') base.hideFriendMargins() return
def __makeResistanceToon(self): if self.resistanceToon: return self.resistanceToon = NPCToons.createLocalNPC(12002) self.resistanceToon.setPosHpr(*ToontownGlobals.CashbotRTBattleOneStartPosHpr) state = random.getstate() random.seed(self.doId) self.resistanceToon.suitType = SuitDNA.getRandomSuitByDept('m') random.setstate(state) self.fakeGoons = [] for i in xrange(self.numFakeGoons): goon = DistributedCashbotBossGoon.DistributedCashbotBossGoon(base.cr) goon.doId = -1 - i goon.setBossCogId(self.doId) goon.generate() goon.announceGenerate() self.fakeGoons.append(goon) self.__hideFakeGoons()
def sendInvasionStatus(self): if self.invading: if self.suitDeptIndex is not None: if self.suitTypeIndex is not None: type = SuitBattleGlobals.SuitAttributes[self.getSuitName()]['name'] else: type = SuitDNA.getDeptFullname(self.getSuitName()) else: type = None status = { 'invasion': { 'type': type, 'flags': [self.isSkelecog, self.isV2, self.isWaiter, self.isVirtual, self.isRental], 'remaining': self.remaining, 'total': self.total, 'start': self.start } } else: status = {'invasion': None} self.air.netMessenger.send('shardStatus', [self.air.ourChannel, status])
def makeIntroductionMovie(self, delayDeletes): track = Parallel() camera.reparentTo(render) localAvatar.setCameraFov(ToontownGlobals.CogHQCameraFov) dooberTrack = Parallel() if self.doobers: self.__doobersToPromotionPosition( self.doobers[:4], self.battleANode) self.__doobersToPromotionPosition( self.doobers[4:], self.battleBNode) turnPosA = ToontownGlobals.SellbotBossDooberTurnPosA turnPosB = ToontownGlobals.SellbotBossDooberTurnPosB self.__walkDoober( self.doobers[0], 0, turnPosA, dooberTrack, delayDeletes) self.__walkDoober( self.doobers[1], 4, turnPosA, dooberTrack, delayDeletes) self.__walkDoober( self.doobers[2], 8, turnPosA, dooberTrack, delayDeletes) self.__walkDoober( self.doobers[3], 12, turnPosA, dooberTrack, delayDeletes) self.__walkDoober( self.doobers[7], 2, turnPosB, dooberTrack, delayDeletes) self.__walkDoober( self.doobers[6], 6, turnPosB, dooberTrack, delayDeletes) self.__walkDoober( self.doobers[5], 10, turnPosB, dooberTrack, delayDeletes) self.__walkDoober( self.doobers[4], 14, turnPosB, dooberTrack, delayDeletes) toonTrack = Parallel() self.__toonsToPromotionPosition(self.toonsA, self.battleANode) self.__toonsToPromotionPosition(self.toonsB, self.battleBNode) delay = 0 for toonId in self.toonsA: self.__walkToonToPromotion( toonId, delay, self.toonsEnterA, toonTrack, delayDeletes) delay += 1 for toonId in self.toonsB: self.__walkToonToPromotion( toonId, delay, self.toonsEnterB, toonTrack, delayDeletes) delay += 1 toonTrack.append(Sequence(Wait(delay), self.closeDoors)) self.rampA.request('extended') self.rampB.request('extended') self.rampC.request('retracted') self.clearChat() self.cagedToon.clearChat() promoteDoobers = TTLocalizer.BossCogPromoteDoobers % SuitDNA.getDeptFullnameP( self.style.dept) doobersAway = TTLocalizer.BossCogDoobersAway[self.style.dept] welcomeToons = TTLocalizer.BossCogWelcomeToons promoteToons = TTLocalizer.BossCogPromoteToons % SuitDNA.getDeptFullnameP( self.style.dept) discoverToons = TTLocalizer.BossCogDiscoverToons attackToons = TTLocalizer.BossCogAttackToons interruptBoss = TTLocalizer.CagedToonInterruptBoss rescueQuery = TTLocalizer.CagedToonRescueQuery bossAnimTrack = Sequence( ActorInterval(self, 'Ff_speech', startTime=2, duration=10, loop=1), ActorInterval(self, 'ltTurn2Wave', duration=2), ActorInterval(self, 'wave', duration=4, loop=1), ActorInterval(self, 'ltTurn2Wave', startTime=2, endTime=0), ActorInterval(self, 'Ff_speech', duration=7, loop=1)) track.append(bossAnimTrack) dialogTrack = Track( (0, Parallel( camera.posHprInterval( 8, Point3(-22, -100, 35), Point3(-10, -13, 0), blendType='easeInOut'), IndirectInterval(toonTrack, 0, 18))), (5.6, Func(self.setChatAbsolute, promoteDoobers, CFSpeech)), (9, IndirectInterval(dooberTrack, 0, 9)), (10, Sequence( Func(self.clearChat), camera.posHprInterval(5, (-0.3, -105.1, 5.4), (0, 0, 0), blendType='easeInOut'))), (12, Func(self.setChatAbsolute, doobersAway, CFSpeech)), (16, Parallel( Func(self.clearChat), camera.posHprInterval(4, (-25, -99, 10), (-14, 10, 0), blendType='easeInOut'), IndirectInterval(dooberTrack, 14), IndirectInterval(toonTrack, 30))), (18, Func(self.setChatAbsolute, welcomeToons, CFSpeech)), (22, Func(self.setChatAbsolute, promoteToons, CFSpeech)), (22.2, Sequence( Func(self.cagedToon.nametag3d.setScale, 2), Func( self.cagedToon.setChatAbsolute, interruptBoss, CFSpeech), ActorInterval(self.cagedToon, 'wave'), Func(self.cagedToon.loop, 'neutral'))), (25, Sequence( Func(self.clearChat), Func(self.cagedToon.clearChat), Func(camera.setPosHpr, -12, -15, 27, -151, -15, 0), ActorInterval(self, 'Ff_lookRt'))), (27, Sequence( Func( self.cagedToon.setChatAbsolute, rescueQuery, CFSpeech), Func(camera.setPosHpr, -12, 48, 94, -26, 20, 0), ActorInterval(self.cagedToon, 'wave'), Func(self.cagedToon.loop, 'neutral'))), (31, Sequence( camera.posHprInterval(1, (-20, -35, 10), (-88, 25, 0), blendType='easeOut'), Func(self.setChatAbsolute, discoverToons, CFSpeech), Func(self.cagedToon.nametag3d.setScale, 1), Func(self.cagedToon.clearChat), ActorInterval(self, 'turn2Fb'))), (35, Sequence( Func(self.clearChat), self.loseCogSuits( self.toonsA, self.battleANode, (0, 18, 5, -180, 0, 0)), self.loseCogSuits( self.toonsB, self.battleBNode, (0, 18, 5, -180, 0, 0)))), (38, Sequence( self.toonNormalEyes(self.involvedToons), camera.posHprInterval(1, (-23.4, -145.6, 44.0), (-10.0, -12.5, 0), blendType='easeInOut'), Func(self.loop, 'Fb_neutral'), Func(self.rampA.request, 'retract'), Func(self.rampB.request, 'retract'), Parallel( self.backupToonsToBattlePosition( self.toonsA, self.battleANode), self.backupToonsToBattlePosition( self.toonsB, self.battleBNode), Sequence( Wait(3), camera.posHprInterval(1, (-25, -35, 20.5), (-90, 0, 0), blendType='easeOut'), Func(self.setChatAbsolute, attackToons, CFSpeech), Wait(3)))))) track.append(dialogTrack) return Sequence( Func(self.stickToonsToFloor), track, Func(self.unstickToons), name=self.uniqueName('Introduction'))
def announceGenerate(self): global OneBossCog DistributedBossCog.DistributedBossCog.announceGenerate(self) self.setName(TTLocalizer.SellbotBossName) nameInfo = TTLocalizer.BossCogNameWithDept % { 'name': self.name, 'dept': SuitDNA.getDeptFullname(self.style.dept)} self.setDisplayName(nameInfo) self.cageDoorSfx = loader.loadSfx( 'phase_5/audio/sfx/CHQ_SOS_cage_door.ogg') self.cageLandSfx = loader.loadSfx( 'phase_9/audio/sfx/CHQ_SOS_cage_land.ogg') self.cageLowerSfx = loader.loadSfx( 'phase_5/audio/sfx/CHQ_SOS_cage_lower.ogg') self.piesRestockSfx = loader.loadSfx( 'phase_9/audio/sfx/CHQ_SOS_pies_restock.ogg') self.rampSlideSfx = loader.loadSfx( 'phase_9/audio/sfx/CHQ_VP_ramp_slide.ogg') self.strafeSfx = [] for i in range(10): self.strafeSfx.append( loader.loadSfx('phase_3.5/audio/sfx/SA_shred.ogg')) render.setTag('pieCode', str(ToontownGlobals.PieCodeNotBossCog)) insidesA = CollisionPolygon( Point3(4.0, -2.0, 5.0), Point3(-4.0, -2.0, 5.0), Point3(-4.0, -2.0, 0.5), Point3(4.0, -2.0, 0.5)) insidesANode = CollisionNode('BossZap') insidesANode.addSolid(insidesA) insidesANode.setCollideMask( ToontownGlobals.PieBitmask | ToontownGlobals.WallBitmask) self.insidesANodePath = self.axle.attachNewNode(insidesANode) self.insidesANodePath.setTag('pieCode', str(ToontownGlobals.PieCodeBossInsides)) self.insidesANodePath.stash() insidesB = CollisionPolygon( Point3(-4.0, 2.0, 5.0), Point3(4.0, 2.0, 5.0), Point3(4.0, 2.0, 0.5), Point3(-4.0, 2.0, 0.5)) insidesBNode = CollisionNode('BossZap') insidesBNode.addSolid(insidesB) insidesBNode.setCollideMask( ToontownGlobals.PieBitmask | ToontownGlobals.WallBitmask) self.insidesBNodePath = self.axle.attachNewNode(insidesBNode) self.insidesBNodePath.setTag('pieCode', str(ToontownGlobals.PieCodeBossInsides)) self.insidesBNodePath.stash() target = CollisionTube(0, -1, 4, 0, -1, 9, 3.5) targetNode = CollisionNode('BossZap') targetNode.addSolid(target) targetNode.setCollideMask(ToontownGlobals.PieBitmask) self.targetNodePath = self.pelvis.attachNewNode(targetNode) self.targetNodePath.setTag( 'pieCode', str( ToontownGlobals.PieCodeBossCog)) shield = CollisionTube(0, 1, 4, 0, 1, 7, 3.5) shieldNode = CollisionNode('BossZap') shieldNode.addSolid(shield) shieldNode.setCollideMask( ToontownGlobals.PieBitmask | ToontownGlobals.CameraBitmask) shieldNodePath = self.pelvis.attachNewNode(shieldNode) disk = loader.loadModel('phase_9/models/char/bossCog-gearCollide') disk.find('**/+CollisionNode').setName('BossZap') disk.reparentTo(self.pelvis) disk.setZ(0.8) self.loadEnvironment() self.__makeCagedToon() self.__loadMopaths() if OneBossCog is not None: self.notify.warning('Multiple BossCogs visible.') OneBossCog = self return
def setDNAString(self, dnaString): self.dna = SuitDNA.SuitDNA() self.dna.makeFromNetString(dnaString) self.setDNA(self.dna) self.setBlend(frameBlend=True)
def getStyleDept(self): if hasattr(self, "dna") and self.dna: return SuitDNA.getDeptFullname(self.dna.dept) else: self.notify.error("called getStyleDept() before dna was set!") return "unknown"
def getStyleDept(self): if hasattr(self, 'dna') and self.dna: return SuitDNA.getDeptFullname(self.dna.dept) else: self.notify.error('called getStyleDept() before dna was set!') return 'unknown'
def __init__(self, avatar): AvatarPanel.AvatarPanel.__init__(self, avatar, FriendsListPanel=FriendsListPanel) self.avName = avatar.getName() gui = loader.loadModel("phase_3.5/models/gui/suit_detail_panel") self.frame = DirectFrame( geom=gui.find("**/avatar_panel"), geom_scale=0.21, geom_pos=(0, 0, 0.02), relief=None, pos=(1.1, 100, 0.525), ) disabledImageColor = Vec4(1, 1, 1, 0.4) text0Color = Vec4(1, 1, 1, 1) text1Color = Vec4(0.5, 1, 0.5, 1) text2Color = Vec4(1, 1, 0.5, 1) text3Color = Vec4(1, 1, 1, 0.2) # Now put the avatar's head in the panel. self.head = self.frame.attachNewNode('head') for part in avatar.headParts: copyPart = part.copyTo(self.head) # Turn on depth write and test. copyPart.setDepthTest(1) copyPart.setDepthWrite(1) p1 = Point3() p2 = Point3() self.head.calcTightBounds(p1, p2) d = p2 - p1 biggest = max(d[0], d[1], d[2]) s = 0.3 / biggest self.head.setPosHprScale(0, 0, 0, 180, 0, 0, s, s, s) # Put the avatar's name across the top. self.nameLabel = DirectLabel( parent=self.frame, pos=(0.0125, 0, 0.36), relief=None, text=self.avName, text_font=avatar.getFont(), text_fg=Vec4(0, 0, 0, 1), text_pos=(0, 0), text_scale=0.047, text_wordwrap=7.5, text_shadow=(1, 1, 1, 1), ) level = avatar.getActualLevel() dept = SuitDNA.getSuitDeptFullname(avatar.dna.name) self.levelLabel = DirectLabel( parent=self.frame, pos=(0, 0, -0.1), relief=None, text=(TTLocalizer.AvatarPanelCogLevel % level), text_font=avatar.getFont(), text_align=TextNode.ACenter, text_fg=Vec4(0, 0, 0, 1), text_pos=(0, 0), text_scale=0.05, text_wordwrap=8.0, ) # Get a temp copy of the corporate medallion for this suit corpIcon = avatar.corpMedallion.copyTo(hidden) corpIcon.iPosHprScale() self.corpIcon = DirectLabel( parent=self.frame, geom=corpIcon, geom_scale=0.13, pos=(0, 0, -0.175), relief=None, ) # Delete copy corpIcon.removeNode() self.deptLabel = DirectLabel( parent=self.frame, pos=(0, 0, -0.28), relief=None, text=dept, text_font=avatar.getFont(), text_align=TextNode.ACenter, text_fg=Vec4(0, 0, 0, 1), text_pos=(0, 0), text_scale=0.05, text_wordwrap=8.0, ) self.closeButton = DirectButton( parent=self.frame, relief=None, pos=(0., 0, -0.36), text=TTLocalizer.AvatarPanelCogDetailClose, text_font=avatar.getFont(), text0_fg=Vec4(0, 0, 0, 1), text1_fg=Vec4(0.5, 0, 0, 1), text2_fg=Vec4(1, 0, 0, 1), text_pos=(0, 0), text_scale=0.05, command=self.__handleClose, ) gui.removeNode() menuX = -0.05 menuScale = 0.064 # hide the friend and clarabelle gui base.localAvatar.obscureFriendsListButton(1) self.frame.show() messenger.send("avPanelDone")
def createNewSuit(self, blockNumbers, streetPoints, toonBlockTakeover=None, cogdoTakeover=None, minPathLen=None, maxPathLen=None, buildingHeight=None, suitLevel=None, suitType=None, suitTrack=None, suitName=None, skelecog=None, revives=None, waiter=None): startPoint = None blockNumber = None if self.notify.getDebug(): self.notify.debug('Choosing origin from %d+%d possibles.' % (len(streetPoints), len(blockNumbers))) while startPoint == None and len(blockNumbers) > 0: bn = random.choice(blockNumbers) blockNumbers.remove(bn) if bn in self.buildingSideDoors: for doorPoint in self.buildingSideDoors[bn]: points = self.dnaStore.getAdjacentPoints(doorPoint) i = points.getNumPoints() - 1 while blockNumber == None and i >= 0: pi = points.getPointIndex(i) p = self.pointIndexes[pi] i -= 1 startTime = SuitTimings.fromSuitBuilding startTime += self.dnaStore.getSuitEdgeTravelTime( doorPoint.getIndex(), pi, self.suitWalkSpeed) if not self.pointCollision(p, doorPoint, startTime): startTime = SuitTimings.fromSuitBuilding startPoint = doorPoint blockNumber = bn while startPoint == None and len(streetPoints) > 0: p = random.choice(streetPoints) streetPoints.remove(p) if not self.pointCollision(p, None, SuitTimings.fromSky): startPoint = p startTime = SuitTimings.fromSky continue if startPoint == None: return None newSuit = DistributedSuitAI.DistributedSuitAI(simbase.air, self) newSuit.startPoint = startPoint if blockNumber != None: newSuit.buildingSuit = 1 if suitTrack == None: suitTrack = self.buildingMgr.getBuildingTrack(blockNumber) else: newSuit.flyInSuit = 1 newSuit.attemptingTakeover = self.newSuitShouldAttemptTakeover() if newSuit.attemptingTakeover: if suitTrack == None and len(self.pendingBuildingTracks) > 0: suitTrack = self.pendingBuildingTracks[0] del self.pendingBuildingTracks[0] self.pendingBuildingTracks.append(suitTrack) if buildingHeight == None and len( self.pendingBuildingHeights) > 0: buildingHeight = self.pendingBuildingHeights[0] del self.pendingBuildingHeights[0] self.pendingBuildingHeights.append(buildingHeight) if suitName is None: suitDeptIndex, suitTypeIndex, flags = self.air.suitInvasionManager.getInvadingCog( ) if flags & IFSkelecog: skelecog = 1 if flags & IFWaiter: waiter = True if flags & IFV2: revives = 1 if suitDeptIndex is not None: suitTrack = SuitDNA.suitDepts[suitDeptIndex] if suitTypeIndex is not None: suitName = self.air.suitInvasionManager.getSuitName() else: suitName = self.defaultSuitName if (suitType is None) and (suitName is not None): suitType = SuitDNA.getSuitType(suitName) suitTrack = SuitDNA.getSuitDept(suitName) if (suitLevel is None) and (buildingHeight is not None): suitLevel = self.chooseSuitLevel( self.SuitHoodInfo[self.hoodInfoIdx][self.SUIT_HOOD_INFO_LVL], buildingHeight) (suitLevel, suitType, suitTrack) = self.pickLevelTypeAndTrack(suitLevel, suitType, suitTrack) newSuit.setupSuitDNA(suitLevel, suitType, suitTrack) newSuit.buildingHeight = buildingHeight gotDestination = self.chooseDestination( newSuit, startTime, toonBlockTakeover=toonBlockTakeover, cogdoTakeover=cogdoTakeover, minPathLen=minPathLen, maxPathLen=maxPathLen) if not gotDestination: self.notify.debug("Couldn't get a destination in %d!" % self.zoneId) newSuit.doNotDeallocateChannel = None newSuit.delete() return None newSuit.initializePath() self.zoneChange(newSuit, None, newSuit.zoneId) if skelecog: newSuit.setSkelecog(skelecog) newSuit.generateWithRequired(newSuit.zoneId) if revives is not None: newSuit.b_setSkeleRevives(revives) if waiter: newSuit.b_setWaiter(1) newSuit.d_setSPDoId(self.doId) newSuit.moveToNextLeg(None) self.suitList.append(newSuit) if newSuit.flyInSuit: self.numFlyInSuits += 1 if newSuit.buildingSuit: self.numBuildingSuits += 1 if newSuit.attemptingTakeover: self.numAttemptingTakeover += 1 return newSuit
def createNewSuit( self, blockNumbers, streetPoints, toonBlockTakeover=None, cogdoTakeover=None, minPathLen=None, maxPathLen=None, buildingHeight=None, suitLevel=None, suitType=None, suitTrack=None, suitName=None, specialSuit=0, ): startPoint = None blockNumber = None if self.notify.getDebug(): self.notify.debug("Choosing origin from %d+%d possibles." % (len(streetPoints), len(blockNumbers))) while startPoint == None and len(blockNumbers) > 0: bn = random.choice(blockNumbers) blockNumbers.remove(bn) if self.buildingSideDoors.has_key(bn): for doorPoint in self.buildingSideDoors[bn]: points = self.dnaData.suitGraph.getAdjacentPoints(doorPoint) for p in points: startTime = SuitTimings.fromSuitBuilding startTime += self.dnaData.suitGraph.getSuitEdgeTravelTime(doorPoint, p, self.suitWalkSpeed) if not self.pointCollision(p, doorPoint, startTime): startTime = SuitTimings.fromSuitBuilding startPoint = doorPoint blockNumber = bn break while startPoint == None and len(streetPoints) > 0: p = random.choice(streetPoints) streetPoints.remove(p) if not self.pointCollision(p, None, SuitTimings.fromSky): startPoint = p startTime = SuitTimings.fromSky if startPoint == None: return newSuit = DistributedSuitAI.DistributedSuitAI(simbase.air, self) newSuit.startPoint = startPoint if blockNumber != None: newSuit.buildingSuit = 1 if suitTrack == None: suitTrack = self.buildingMgr.getBuildingTrack(blockNumber) else: newSuit.flyInSuit = 1 newSuit.attemptingTakeover = self.newSuitShouldAttemptTakeover() if newSuit.attemptingTakeover: if suitTrack == None and len(self.pendingBuildingTracks) > 0: suitTrack = self.pendingBuildingTracks[0] del self.pendingBuildingTracks[0] self.pendingBuildingTracks.append(suitTrack) if buildingHeight == None and len(self.pendingBuildingHeights) > 0: buildingHeight = self.pendingBuildingHeights[0] del self.pendingBuildingHeights[0] self.pendingBuildingHeights.append(buildingHeight) if suitName == None: suitName, specialSuit = self.air.suitInvasionManager.getInvadingCog() if suitName == None: suitName = self.defaultSuitName if suitType == None and suitName != None: suitType = SuitDNA.getSuitType(suitName) suitTrack = SuitDNA.getSuitDept(suitName) if suitLevel == None and buildingHeight != None: suitLevel = self.chooseSuitLevel( self.SuitHoodInfo[self.hoodInfoIdx][self.SUIT_HOOD_INFO_LVL], buildingHeight ) suitLevel, suitType, suitTrack = self.pickLevelTypeAndTrack(suitLevel, suitType, suitTrack) newSuit.setupSuitDNA(suitLevel, suitType, suitTrack) newSuit.buildingHeight = buildingHeight gotDestination = self.chooseDestination( newSuit, startTime, toonBlockTakeover=toonBlockTakeover, cogdoTakeover=cogdoTakeover, minPathLen=minPathLen, maxPathLen=maxPathLen, ) if not gotDestination: self.notify.debug("Couldn't get a destination in %d!" % self.zoneId) newSuit.doNotDeallocateChannel = None newSuit.delete() return newSuit.initializePath() self.zoneChange(newSuit, None, newSuit.zoneId) # Determine if we are spawning a special type of suit. 1 is Skelecog, 2 is v2.0. if specialSuit == 1: newSuit.setSkelecog(1) elif specialSuit == 2: newSuit.setSkeleRevives(1) newSuit.generateWithRequired(newSuit.zoneId) newSuit.moveToNextLeg(None) self.suitList.append(newSuit) if newSuit.flyInSuit: self.numFlyInSuits += 1 if newSuit.buildingSuit: self.numBuildingSuits += 1 if newSuit.attemptingTakeover: self.numAttemptingTakeover += 1 return newSuit
def createNewSuit(self, blockNumbers, streetPoints, toonBlockTakeover=None, cogdoTakeover=None, minPathLen=None, maxPathLen=None, buildingHeight=None, suitLevel=None, suitType=None, suitTrack=None, suitName=None, skelecog=None, revives=None): startPoint = None blockNumber = None if self.notify.getDebug(): self.notify.debug('Choosing origin from %d+%d possibles.' % (len(streetPoints), len(blockNumbers))) while startPoint == None and len(blockNumbers) > 0: bn = random.choice(blockNumbers) blockNumbers.remove(bn) if self.buildingSideDoors.has_key(bn): for doorPoint in self.buildingSideDoors[bn]: points = self.dnaStore.getAdjacentPoints(doorPoint) i = points.getNumPoints() - 1 while blockNumber == None and i >= 0: pi = points.getPointIndex(i) p = self.pointIndexes[pi] i -= 1 startTime = SuitTimings.fromSuitBuilding startTime += self.dnaStore.getSuitEdgeTravelTime(doorPoint.getIndex(), pi, self.suitWalkSpeed) if not self.pointCollision(p, doorPoint, startTime): startTime = SuitTimings.fromSuitBuilding startPoint = doorPoint blockNumber = bn while startPoint == None and len(streetPoints) > 0: p = random.choice(streetPoints) streetPoints.remove(p) if not self.pointCollision(p, None, SuitTimings.fromSky): startPoint = p startTime = SuitTimings.fromSky continue if startPoint == None: print 'DSP failed to create a new suit! REASON: startPoint = None' return None newSuit = DistributedSuitAI.DistributedSuitAI(simbase.air, self) newSuit.startPoint = startPoint if blockNumber != None: newSuit.buildingSuit = 1 if suitTrack == None: suitTrack = self.buildingMgr.getBuildingTrack(blockNumber) else: newSuit.flyInSuit = 1 newSuit.attemptingTakeover = self.newSuitShouldAttemptTakeover() if newSuit.attemptingTakeover: if suitTrack == None and len(self.pendingBuildingTracks) > 0: suitTrack = self.pendingBuildingTracks[0] del self.pendingBuildingTracks[0] self.pendingBuildingTracks.append(suitTrack) if buildingHeight == None and len(self.pendingBuildingHeights) > 0: buildingHeight = self.pendingBuildingHeights[0] del self.pendingBuildingHeights[0] self.pendingBuildingHeights.append(buildingHeight) if suitName == None: (suitName, skelecog, v2, waiter) = self.air.suitInvasionManager.getInvadingCog() if suitName == None: suitName = self.defaultSuitName if suitType == None and suitName != None: suitType = SuitDNA.getSuitType(suitName) suitTrack = SuitDNA.getSuitDept(suitName) if suitLevel == None and buildingHeight != None: suitLevel = self.chooseSuitLevel(self.SuitHoodInfo[self.hoodInfoIdx][self.SUIT_HOOD_INFO_LVL], buildingHeight) (suitLevel, suitType, suitTrack) = self.pickLevelTypeAndTrack(suitLevel, suitType, suitTrack) newSuit.setupSuitDNA(suitLevel, suitType, suitTrack) newSuit.buildingHeight = buildingHeight gotDestination = self.chooseDestination(newSuit, startTime, toonBlockTakeover = toonBlockTakeover, cogdoTakeover = cogdoTakeover, minPathLen = minPathLen, maxPathLen = maxPathLen) if not gotDestination: self.notify.debug("Couldn't get a destination in %d!" % self.zoneId) newSuit.doNotDeallocateChannel = None newSuit.delete() print 'DSP failed to create a new suit! REASON: gotDestination = None' return None newSuit.initializePath() self.zoneChange(newSuit, None, newSuit.zoneId) if skelecog: newSuit.setSkelecog(skelecog) newSuit.generateWithRequired(newSuit.zoneId) if v2: revives = 1 if revives: newSuit.b_setSkeleRevives(revives) newSuit.d_setSPDoId(self.doId) newSuit.moveToNextLeg(None) self.suitList.append(newSuit) if newSuit.flyInSuit: self.numFlyInSuits += 1 if newSuit.buildingSuit: self.numBuildingSuits += 1 if newSuit.attemptingTakeover: self.numAttemptingTakeover += 1 return newSuit
def createNewSuit(self, blockNumbers, streetPoints, toonBlockTakeover = None, cogdoTakeover = None, minPathLen = None, maxPathLen = None, buildingHeight = None, suitLevel = None, suitType = None, suitTrack = None, suitName = None, specialSuit = 0): startPoint = None blockNumber = None if self.notify.getDebug(): self.notify.debug('Choosing origin from %d+%d possibles.' % (len(streetPoints), len(blockNumbers))) while startPoint == None and len(blockNumbers) > 0: bn = random.choice(blockNumbers) blockNumbers.remove(bn) if self.buildingSideDoors.has_key(bn): for doorPoint in self.buildingSideDoors[bn]: points = self.dnaData.suitGraph.getAdjacentPoints(doorPoint) for p in points: startTime = SuitTimings.fromSuitBuilding startTime += self.dnaData.suitGraph.getSuitEdgeTravelTime(doorPoint, p, self.suitWalkSpeed) if not self.pointCollision(p, doorPoint, startTime): startTime = SuitTimings.fromSuitBuilding startPoint = doorPoint blockNumber = bn break while startPoint == None and len(streetPoints) > 0: p = random.choice(streetPoints) streetPoints.remove(p) if not self.pointCollision(p, None, SuitTimings.fromSky): startPoint = p startTime = SuitTimings.fromSky if startPoint == None: return newSuit = DistributedSuitAI.DistributedSuitAI(simbase.air, self) newSuit.startPoint = startPoint if blockNumber != None: newSuit.buildingSuit = 1 if suitTrack == None: suitTrack = self.buildingMgr.getBuildingTrack(blockNumber) else: newSuit.flyInSuit = 1 newSuit.attemptingTakeover = self.newSuitShouldAttemptTakeover() if newSuit.attemptingTakeover: if suitTrack == None and len(self.pendingBuildingTracks) > 0: suitTrack = self.pendingBuildingTracks[0] del self.pendingBuildingTracks[0] self.pendingBuildingTracks.append(suitTrack) if buildingHeight == None and len(self.pendingBuildingHeights) > 0: buildingHeight = self.pendingBuildingHeights[0] del self.pendingBuildingHeights[0] self.pendingBuildingHeights.append(buildingHeight) if suitName == None: suitName, specialSuit = self.air.suitInvasionManager.getInvadingCog() if suitName == None: suitName = self.defaultSuitName if suitType == None and suitName != None: suitType = SuitDNA.getSuitType(suitName) suitTrack = SuitDNA.getSuitDept(suitName) if suitLevel == None and buildingHeight != None: suitLevel = self.chooseSuitLevel(self.SuitHoodInfo[self.hoodInfoIdx][self.SUIT_HOOD_INFO_LVL], buildingHeight) suitLevel, suitType, suitTrack = self.pickLevelTypeAndTrack(suitLevel, suitType, suitTrack) newSuit.setupSuitDNA(suitLevel, suitType, suitTrack) newSuit.buildingHeight = buildingHeight gotDestination = self.chooseDestination(newSuit, startTime, toonBlockTakeover=toonBlockTakeover, cogdoTakeover=cogdoTakeover, minPathLen=minPathLen, maxPathLen=maxPathLen) if not gotDestination: self.notify.debug("Couldn't get a destination in %d!" % self.zoneId) newSuit.doNotDeallocateChannel = None newSuit.delete() return newSuit.initializePath() self.zoneChange(newSuit, None, newSuit.zoneId) # Determine if we are spawning a special type of suit. 1 is Skelecog, 2 is v2.0. if specialSuit == 1: newSuit.setSkelecog(1) elif specialSuit == 2: newSuit.setSkeleRevives(1) newSuit.generateWithRequired(newSuit.zoneId) newSuit.moveToNextLeg(None) self.suitList.append(newSuit) if newSuit.flyInSuit: self.numFlyInSuits += 1 if newSuit.buildingSuit: self.numBuildingSuits += 1 if newSuit.attemptingTakeover: self.numAttemptingTakeover += 1 return newSuit
def __init__(self, avatar): AvatarPanel.AvatarPanel.__init__(self, avatar, FriendsListPanel=FriendsListPanel) self.avName = avatar.getName() gui = loader.loadModel('phase_3.5/models/gui/suit_detail_panel') self.frame = DirectFrame(geom=gui.find('**/avatar_panel'), geom_scale=0.21, geom_pos=(0, 0, 0.02), relief=None, pos=(1.1, 100, 0.525)) disabledImageColor = Vec4(1, 1, 1, 0.4) text0Color = Vec4(1, 1, 1, 1) text1Color = Vec4(0.5, 1, 0.5, 1) text2Color = Vec4(1, 1, 0.5, 1) text3Color = Vec4(1, 1, 1, 0.2) self.head = self.frame.attachNewNode('head') for part in avatar.headParts: copyPart = part.copyTo(self.head) copyPart.setDepthTest(1) copyPart.setDepthWrite(1) p1 = Point3() p2 = Point3() self.head.calcTightBounds(p1, p2) d = p2 - p1 biggest = max(d[0], d[1], d[2]) s = 0.3 / biggest self.head.setPosHprScale(0, 0, 0, 180, 0, 0, s, s, s) self.nameLabel = DirectLabel(parent=self.frame, pos=(0.0125, 0, 0.36), relief=None, text=self.avName, text_font=avatar.getFont(), text_fg=Vec4(0, 0, 0, 1), text_pos=(0, 0), text_scale=0.047, text_wordwrap=7.5, text_shadow=(1, 1, 1, 1)) level = avatar.getActualLevel() dept = SuitDNA.getSuitDeptFullname(avatar.dna.name) self.levelLabel = DirectLabel(parent=self.frame, pos=(0, 0, -0.1), relief=None, text=TTLocalizer.AvatarPanelCogLevel % level, text_font=avatar.getFont(), text_align=TextNode.ACenter, text_fg=Vec4(0, 0, 0, 1), text_pos=(0, 0), text_scale=0.05, text_wordwrap=8.0) corpIcon = avatar.corpMedallion.copyTo(hidden) corpIcon.setPosHprScale(0, 0, 0, 0, 0, 0, 1, 1, 1) self.corpIcon = DirectLabel(parent=self.frame, geom=corpIcon, geom_scale=0.13, pos=(0, 0, -0.175), relief=None) corpIcon.removeNode() self.deptLabel = DirectLabel(parent=self.frame, pos=(0, 0, -0.28), relief=None, text=dept, text_font=avatar.getFont(), text_align=TextNode.ACenter, text_fg=Vec4(0, 0, 0, 1), text_pos=(0, 0), text_scale=0.05, text_wordwrap=8.0) self.closeButton = DirectButton( parent=self.frame, relief=None, pos=(0.0, 0, -0.36), text=TTLocalizer.AvatarPanelCogDetailClose, text_font=avatar.getFont(), text0_fg=Vec4(0, 0, 0, 1), text1_fg=Vec4(0.5, 0, 0, 1), text2_fg=Vec4(1, 0, 0, 1), text_pos=(0, 0), text_scale=0.05, command=self.__handleClose) gui.removeNode() menuX = -0.05 menuScale = 0.064 base.localAvatar.obscureFriendsListButton(1) self.frame.show() messenger.send('avPanelDone') self.frame.reparentTo(base.a2dTopRight) self.frame.setPos(-0.25, 0, -0.5)
def setDNAString(self, dnaString): self.dna = SuitDNA.SuitDNA() self.dna.makeFromNetString(dnaString) self.setDNA(self.dna)
def start(self): # Stop any current invasion that might be happening by chance if self.air.suitInvasionManager.getInvading(): self.notify.info( "Stopping current invasion to make room for holiday %s" % (self.holidayId)) self.air.suitInvasionManager.stopInvasion() if not simbase.config.GetBool('want-invasions', 1): return 1 if (self.holidayId == ToontownGlobals.HALLOWEEN): # Bloodsucker invasion on Halloween cogType = 'b' # Max the number so they will not run out numCogs = 1000000000 skeleton = 0 elif (self.holidayId == ToontownGlobals.SKELECOG_INVASION): # any cog will do import SuitDNA import random cogType = random.choice(SuitDNA.suitHeadTypes) # Max the number so they will not run out numCogs = 1000000000 skeleton = 1 elif (self.holidayId == ToontownGlobals.MR_HOLLYWOOD_INVASION): # Mr. Hollywood of course... cogType = 'mh' # Max the number so they will not run out numCogs = 1000000000 skeleton = 0 elif (self.holidayId == ToontownGlobals.BOSSCOG_INVASION): # any cog will do import SuitDNA import random cogType = SuitDNA.getRandomSuitByDept('c') # Max the number so they will not run out numCogs = 1000000000 skeleton = 0 elif (self.holidayId == ToontownGlobals.MARCH_INVASION): # Backstabbers... cogType = 'bs' # Max the number so they will not run out numCogs = 1000000000 skeleton = 0 elif (self.holidayId == ToontownGlobals.DECEMBER_INVASION): # Sellbots... cogType = 'cc' # Max the number so they will not run out numCogs = 1000000000 skeleton = 0 elif (self.holidayId == ToontownGlobals.SELLBOT_SURPRISE_1): # Sellbot Surprise... cold caller cogType = 'cc' # Max the number so they will not run out numCogs = 1000000000 skeleton = 0 elif (self.holidayId == ToontownGlobals.SELLBOT_SURPRISE_2 or \ self.holidayId == ToontownGlobals.NAME_DROPPER_INVASION): # Sellbot Surprise ... Name dropper cogType = 'nd' # Max the number so they will not run out numCogs = 1000000000 skeleton = 0 elif (self.holidayId == ToontownGlobals.SELLBOT_SURPRISE_3): # Sellbot Surprise ... gladhander cogType = 'gh' # Max the number so they will not run out numCogs = 1000000000 skeleton = 0 elif (self.holidayId == ToontownGlobals.SELLBOT_SURPRISE_4 or \ self.holidayId == ToontownGlobals.MOVER_AND_SHAKER_INVASION): # Sellbot Surprise ... mover & shaker cogType = 'ms' # Max the number so they will not run out numCogs = 1000000000 skeleton = 0 elif (self.holidayId == ToontownGlobals.CASHBOT_CONUNDRUM_1): # Cashbot Conundrum... Short Change cogType = 'sc' # Max the number so they will not run out numCogs = 1000000000 skeleton = 0 elif (self.holidayId == ToontownGlobals.CASHBOT_CONUNDRUM_2 or \ self.holidayId == ToontownGlobals.PENNY_PINCHER_INVASION): # Cashbot Conundrum... Penny Pincher cogType = 'pp' # Max the number so they will not run out numCogs = 1000000000 skeleton = 0 elif (self.holidayId == ToontownGlobals.CASHBOT_CONUNDRUM_3): # Cashbot Conundrum... Bean Counter cogType = 'bc' # Max the number so they will not run out numCogs = 1000000000 skeleton = 0 elif (self.holidayId == ToontownGlobals.CASHBOT_CONUNDRUM_4 or \ self.holidayId == ToontownGlobals.NUMBER_CRUNCHER_INVASION): # Cashbot Conundrum... Number Cruncher cogType = 'nc' # Max the number so they will not run out numCogs = 1000000000 skeleton = 0 elif (self.holidayId == ToontownGlobals.LAWBOT_GAMBIT_1): # Lawbot Gambit... bottom feeder cogType = 'bf' # Max the number so they will not run out numCogs = 1000000000 skeleton = 0 elif (self.holidayId == ToontownGlobals.LAWBOT_GAMBIT_2 or \ self.holidayId == ToontownGlobals.DOUBLE_TALKER_INVASION): # Lawbot Gambit... double talker cogType = 'dt' # Max the number so they will not run out numCogs = 1000000000 skeleton = 0 elif (self.holidayId == ToontownGlobals.LAWBOT_GAMBIT_3 or \ self.holidayId == ToontownGlobals.AMBULANCE_CHASER_INVASION): # Lawbot Gambit... ambulance chaser cogType = 'ac' # Max the number so they will not run out numCogs = 1000000000 skeleton = 0 elif (self.holidayId == ToontownGlobals.LAWBOT_GAMBIT_4): # Lawbot Gambit... back stabber cogType = 'bs' # Max the number so they will not run out numCogs = 1000000000 skeleton = 0 elif (self.holidayId == ToontownGlobals.TROUBLE_BOSSBOTS_1): # The Trouble with Bossbots ... flunky cogType = 'f' # Max the number so they will not run out numCogs = 1000000000 skeleton = 0 elif (self.holidayId == ToontownGlobals.TROUBLE_BOSSBOTS_2): # The Trouble with Bossbots ... pencil pusher cogType = 'p' # Max the number so they will not run out numCogs = 1000000000 skeleton = 0 elif (self.holidayId == ToontownGlobals.TROUBLE_BOSSBOTS_3 or \ self.holidayId == ToontownGlobals.MICROMANAGER_INVASION): # The Trouble with Bossbots ... micro manager cogType = 'mm' # Max the number so they will not run out numCogs = 1000000000 skeleton = 0 elif (self.holidayId == ToontownGlobals.TROUBLE_BOSSBOTS_4 or \ self.holidayId == ToontownGlobals.DOWN_SIZER_INVASION ): # The Trouble with Bossbots ... downsizer cogType = 'ds' # Max the number so they will not run out numCogs = 1000000000 skeleton = 0 elif (self.holidayId == ToontownGlobals.COLD_CALLER_INVASION): cogType = 'cc' # Max the number so they will not run out numCogs = 1000000000 skeleton = 0 elif (self.holidayId == ToontownGlobals.BEAN_COUNTER_INVASION): cogType = 'bc' # Max the number so they will not run out numCogs = 1000000000 skeleton = 0 elif (self.holidayId == ToontownGlobals.DOUBLE_TALKER_INVASION): # The Trouble with Bossbots ... downsizer cogType = 'dt' # Max the number so they will not run out numCogs = 1000000000 skeleton = 0 elif (self.holidayId == ToontownGlobals.DOWNSIZER_INVASION): # The Trouble with Bossbots ... downsizer cogType = 'ds' # Max the number so they will not run out numCogs = 1000000000 skeleton = 0 elif (self.holidayId == ToontownGlobals.YES_MAN_INVASION): # The Trouble with Bossbots ... yes man cogType = 'ym' # Max the number so they will not run out numCogs = 1000000000 skeleton = 0 elif (self.holidayId == ToontownGlobals.TIGHTWAD_INVASION): # tightwad cogType = 'tw' # Max the number so they will not run out numCogs = 1000000000 skeleton = 0 elif (self.holidayId == ToontownGlobals.TELEMARKETER_INVASION): # telemarketer cogType = 'tm' # Max the number so they will not run out numCogs = 1000000000 skeleton = 0 elif (self.holidayId == ToontownGlobals.HEADHUNTER_INVASION): # head hunter cogType = 'hh' # Max the number so they will not run out numCogs = 1000000000 skeleton = 0 elif (self.holidayId == ToontownGlobals.SPINDOCTOR_INVASION): # spin doctor cogType = 'sd' # Max the number so they will not run out numCogs = 1000000000 skeleton = 0 elif (self.holidayId == ToontownGlobals.MONEYBAGS_INVASION): # money bags cogType = 'mb' # Max the number so they will not run out numCogs = 1000000000 skeleton = 0 elif (self.holidayId == ToontownGlobals.TWOFACES_INVASION): # two faces cogType = 'tf' # Max the number so they will not run out numCogs = 1000000000 skeleton = 0 elif (self.holidayId == ToontownGlobals.MINGLER_INVASION): # mingler cogType = 'm' # Max the number so they will not run out numCogs = 1000000000 skeleton = 0 elif (self.holidayId == ToontownGlobals.LOANSHARK_INVASION): # loan sharks cogType = 'ls' # Max the number so they will not run out numCogs = 1000000000 skeleton = 0 elif (self.holidayId == ToontownGlobals.CORPORATE_RAIDER_INVASION): # corporate raider cogType = 'cr' # Max the number so they will not run out numCogs = 1000000000 skeleton = 0 elif (self.holidayId == ToontownGlobals.LEGAL_EAGLE_INVASION): # legal eagle cogType = 'le' # Max the number so they will not run out numCogs = 1000000000 skeleton = 0 elif (self.holidayId == ToontownGlobals.ROBBER_BARON_INVASION): # robber baron cogType = 'rb' # Max the number so they will not run out numCogs = 1000000000 skeleton = 0 elif (self.holidayId == ToontownGlobals.BIG_WIG_INVASION): # big wig cogType = 'bw' # Max the number so they will not run out numCogs = 1000000000 skeleton = 0 elif (self.holidayId == ToontownGlobals.BIG_CHEESE_INVASION): # big cheese cogType = 'tbc' # Max the number so they will not run out numCogs = 1000000000 skeleton = 0 else: self.notify.warning("Unrecognized holidayId: %s" % (self.holidayId)) return 0 self.air.suitInvasionManager.startInvasion(cogType, numCogs, skeleton) self.air.suitInvasionManager.waitForNextInvasion() return 1
def getStyleDept(self): if hasattr(self, 'dna') and self.dna: return SuitDNA.getDeptFullname(self.dna.dept)