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'
Beispiel #14
0
    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")
Beispiel #15
0
    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
Beispiel #19
0
 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'
Beispiel #20
0
    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
Beispiel #23
0
 def getStyleDept(self):
     if hasattr(self, 'dna') and self.dna:
         return SuitDNA.getDeptFullname(self.dna.dept)