def handleAvatarLeave(self, avatar, reason): DistributedBattleZoneAI.handleAvatarLeave(self, avatar, reason) if hasattr(self, 'watchingAvatarIds') and len( self.watchingAvatarIds) == 0: self.resetEverything() self.bldg.elevator.b_setState('opening')
def setAvatars(self, avIds): DistributedBattleZoneAI.d_setAvatars(self, avIds) DistributedBattleZoneAI.setAvatars(self, avIds) self.toonId2suitsTargeting = { avId: [] for avId in self.watchingAvatarIds }
def handleAvatarLeave(self, avatar, reason): DistributedBattleZoneAI.handleAvatarLeave(self, avatar, reason) if hasattr(self, 'watchingAvatarIds') and len( self.watchingAvatarIds) == 0: self.requestDelete() self.air.shutdown()
def generate(self): DistributedBattleZoneAI.generate(self) # Link up networked entities from src.coginvasion.szboss import (DistributedIndicatorLightAI, DistributedSZBossSuitAI, DistributedCutsceneAI, DistributedGoonAI, DistributedGeneratorAI, DistributedSZBossToonAI) from src.coginvasion.cogoffice.AIEntities import (SuitSpawn) from src.coginvasion.battle.DistributedHPBarrelAI import DistributedHPBarrelAI from src.coginvasion.battle.DistributedGagBarrelAI import DistributedGagBarrelAI #self.bspLoader.linkServerEntityToClass("npc_goon", DistributedGoonAI.DistributedGoonAI) self.bspLoader.linkServerEntityToClass( "npc_suit", DistributedSZBossSuitAI.DistributedSZBossSuitAI) self.bspLoader.linkServerEntityToClass( "info_cutscene", DistributedCutsceneAI.DistributedCutsceneAI) self.bspLoader.linkServerEntityToClass( "info_indicator_light", DistributedIndicatorLightAI.DistributedIndicatorLightAI) self.bspLoader.linkServerEntityToClass( "func_generator", DistributedGeneratorAI.DistributedGeneratorAI) self.bspLoader.linkServerEntityToClass( "npc_toon", DistributedSZBossToonAI.DistributedSZBossToonAI) self.bspLoader.linkServerEntityToClass("cogoffice_suitspawn", SuitSpawn) self.bspLoader.linkServerEntityToClass("item_gagbarrel", DistributedGagBarrelAI) self.bspLoader.linkServerEntityToClass("item_laffbarrel", DistributedHPBarrelAI)
def rewardSequenceComplete(self, timestamp): DistributedBattleZoneAI.rewardSequenceComplete(self, timestamp) self.stopTrackingAll() base.taskMgr.doMethodLater(0.1, self.victoryTask, self.uniqueName('victoryTask'), extraArgs=[self.avReadyToContinue], appendTask=True)
def enterVictory(self): DistributedBattleZoneAI.battleComplete(self) for avId in self.watchingAvatarIds: avatar = self.air.doId2do.get(avId) if avatar: # Let this avatar's quest manager know that they have defeated a cog building. avatar.questManager.cogBuildingDefeated( self.hood, self.deptClass, self.numFloors)
def delete(self): base.taskMgr.remove(self.uniqueName('monitorAvatar')) self.avatarId = None self.av = None if self.tutSuit: self.tutSuit.disable() self.tutSuit.requestDelete() self.tutSuit = None DistributedBattleZoneAI.delete(self)
def loadBSPLevel(self, lfile, transition=False): from panda3d.core import Filename self.levelPrefix = Filename.fromOsSpecific( lfile).getBasenameWoExtension().split('_')[0].lower() DistributedBattleZoneAI.loadBSPLevel(self, lfile, transition) if self.isLevelType(self.WavesLevel): spawns = self.bspLoader.findAllEntities("batch_cog_spawner") if len(spawns) > 0: self.batchSpawn = spawns[0]
def __init__(self, air): DistributedBattleZoneAI.__init__(self, air) self.battleType = BattleGlobals.BTArcade self.matchData = None self.fsm = ClassicFSM('DistributedArcadeBattleZoneAI', [ State('off', self.enterOff, self.exitOff), ], 'off', 'off') self.readyAvatars = [] # Variables related to turrets self.turretMgr = None
def addAvatar(self, avId, andUpdateAvatars=0): DistributedBattleZoneAI.addAvatar(self, avId, andUpdateAvatars) # yikes # # This makes the local avatar be correctly registered under the # battle zone since there is a dependency-cycle between them. av = self.air.doId2do.get(avId) if av: self.air.removeAvatar(av) self.air.addAvatar(av)
def resetEverything(self): DistributedBattleZoneAI.resetStats(self) self.currentFloor = 0 self.toonId2suitsTargeting = {} self.spotTaken2suitId = {} self.cleanupGuardSuits() self.resetPhysics() self.ignoreEvents() self.unloadBSPLevel() self.readyAvatars = [] for elevator in self.elevators: if elevator: elevator.b_setState('closed') self.b_setState('off')
def generate(self): DistributedBattleZoneAI.generate(self) from src.coginvasion.deathmatch.DistributedGagPickupAI import DistributedGagPickupAI from src.coginvasion.szboss.InfoBgm import InfoBgm from src.coginvasion.szboss.DistributedSZBossToonAI import DistributedSZBossToonAI from src.coginvasion.szboss.DistributedSZBossSuitAI import DistributedSZBossSuitAI from src.coginvasion.szboss.ScriptedSequenceAI import ScriptedSequenceAI from src.coginvasion.szboss.ScriptedSpeechAI import ScriptedSpeechAI from src.coginvasion.szboss.goon.NPC_GoonAI import NPC_GoonAI from src.coginvasion.cogoffice.AIEntities import SuitSpawn from src.coginvasion.battle.DistributedHPBarrelAI import DistributedHPBarrelAI from src.coginvasion.arcade.BatchCogSpawnerAI import BatchCogSpawnerAI from src.mod.CogStomperAI import CogStomperAI from src.mod.CogCageAI import CogCageAI from src.mod.NPC_VPAI import NPC_VPAI from src.mod.KeypadAI import KeypadAI from src.mod.LaffBarrelAI import LaffBarrelAI self.bspLoader.linkServerEntityToClass("gag_pickup", DistributedGagPickupAI) self.bspLoader.linkServerEntityToClass("npc_toon", DistributedSZBossToonAI) self.bspLoader.linkServerEntityToClass("npc_suit", DistributedSZBossSuitAI) self.bspLoader.linkServerEntityToClass("scripted_sequence", ScriptedSequenceAI) self.bspLoader.linkServerEntityToClass("scripted_speech", ScriptedSpeechAI) self.bspLoader.linkServerEntityToClass("cogoffice_suitspawn", SuitSpawn) self.bspLoader.linkServerEntityToClass("batch_cog_spawner", BatchCogSpawnerAI) self.bspLoader.linkServerEntityToClass("item_laffbarrel", DistributedHPBarrelAI) self.bspLoader.linkServerEntityToClass("cog_stomper", CogStomperAI) self.bspLoader.linkServerEntityToClass("cog_cage", CogCageAI) self.bspLoader.linkServerEntityToClass("npc_goon", NPC_GoonAI) self.bspLoader.linkServerEntityToClass("npc_vp", NPC_VPAI) self.bspLoader.linkServerEntityToClass("item_keypad", KeypadAI) self.bspLoader.linkServerEntityToClass("mod_item_laffbarrel", LaffBarrelAI)
def __init__(self, air, numFloors, dept, hood, bldg, exteriorZoneId): DistributedBattleZoneAI.__init__(self, air) self.STOP_TRACKING_WHEN_DEAD = 0 self.fsm = ClassicFSM.ClassicFSM('DistributedCogOfficeBattleAI', [ State.State('off', self.enterOff, self.exitOff), State.State('floorIntermission', self.enterFloorIntermission, self.exitFloorIntermission), State.State('bldgComplete', self.enterBldgComplete, self.exitBldgComplete), State.State('battle', self.enterBattle, self.exitBattle), State.State('rideElevator', self.enterRideElevator, self.exitRideElevator), State.State('faceOff', self.enterFaceOff, self.exitFaceOff), State.State('victory', self.enterVictory, self.exitVictory) ], 'off', 'off') self.fsm.enterInitialState() self.hood = hood self.bldg = bldg self.bldgDoId = self.bldg.doId self.exteriorZoneId = exteriorZoneId self.toonId2suitsTargeting = {} self.guardSuits = [] self.roomsVisited = [] self.numFloors = numFloors self.currentFloor = 0 self.tauntSuitId = 0 self.currentRoom = "" self.readyAvatars = [] self.elevators = [None, None] self.entranceElevator = None self.exitElevator = None self.infoEntity = None self.dept = dept if dept == 'c': self.deptClass = Dept.BOSS elif dept == 'l': self.deptClass = Dept.LAW elif dept == 's': self.deptClass = Dept.SALES elif dept == 'm': self.deptClass = Dept.CASH
def __init__(self, air): DistributedBattleZoneAI.__init__(self, air) self.lost = False self.batchSpawn = None self.waveNum = 0 self.waveSuitsRemaining = 0 self.waveStartTime = 0.0 self.waveStats = {0: {}} self.stats = {} self.levelPrefix = "" self.numberDropped = False self.codeWasUsed = False self.numberPickUpTime = 0.0 self.getNumberIval() self.numberIdx = 0 self.numbers = [[1, 5, 9, 3], [2, 9, 4, 1], [3, 0, 1, 0], [4, 8, 9, 2]]
def loadedMap(self): DistributedBattleZoneAI.loadedMap(self) print("Loaded map from client!!!!") if not self.mapWasTransitionedTo: avId = self.air.getAvatarIdFromSender() inst = self.getAvatarInstance(avId) if inst: self.gameRules.respawnPlayer(inst.avatar) if self.batchSpawn and self.isLevelType(self.WavesLevel): self.beginWaveLater(1) if self.map == "facility_battle_v2": self.numbers = [] keypads = self.bspLoader.findAllEntities("item_keypad") keypads.sort( key=lambda keypad: keypad.getCEntity().getTargetname()) for i in range(len(keypads)): keypad = keypads[i] self.numbers.append(list(keypad.code)) print(self.numbers)
def delete(self): self.fsm.requestFinalState() self.fsm = None self.infoEntity = None self.currentFloor = None self.toonId2suitsTargeting = None self.spotTaken2suitId = None self.cleanupGuardSuits() self.guardSuits = None self.readyAvatars = None self.cleanupElevators() self.elevators = None self.entanceElevator = None self.exitElevator = None self.hood = None self.numFloors = None self.dept = None self.deptClass = None self.bldg = None self.bldgDoId = None self.exteriorZoneId = None self.availableBattlePoints = None DistributedBattleZoneAI.delete(self)
def generate(self): DistributedBattleZoneAI.generate(self) import AIEntities from src.coginvasion.szboss import (InfoTimer, DistributedFuncDoorAI, DistributedTriggerAI) from src.coginvasion.battle import (DistributedHPBarrelAI, DistributedGagBarrelAI) self.bspLoader.linkServerEntityToClass("cogoffice_suitspawn", AIEntities.SuitSpawn) self.bspLoader.linkServerEntityToClass("cogoffice_hangoutpoint", AIEntities.SuitHangout) self.bspLoader.linkServerEntityToClass("cogoffice_elevator", DistributedCogOfficeElevatorAI) self.bspLoader.linkServerEntityToClass("info_timer", InfoTimer.InfoTimer) self.bspLoader.linkServerEntityToClass( "func_door", DistributedFuncDoorAI.DistributedFuncDoorAI) self.bspLoader.linkServerEntityToClass("info_cogoffice_floor", AIEntities.InfoCogOfficeFloor) self.bspLoader.linkServerEntityToClass( "item_gagbarrel", DistributedGagBarrelAI.DistributedGagBarrelAI) self.bspLoader.linkServerEntityToClass( "item_laffbarrel", DistributedHPBarrelAI.DistributedHPBarrelAI)
def generate(self): DistributedBattleZoneAI.generate(self) from src.coginvasion.deathmatch.DistributedGagPickupAI import DistributedGagPickupAI self.bspLoader.linkServerEntityToClass("gag_pickup", DistributedGagPickupAI)
def announceGenerate(self): DistributedBattleZoneAI.announceGenerate(self) self.turretMgr = DistributedPieTurretManagerAI(self.air) self.turretMgr.generateWithRequired(self.zoneId) self.fsm.enterInitialState()
def announceGenerate(self): DistributedBattleZoneAI.announceGenerate(self) self.b_setMap("sellbot_third_floor")
def __init__(self, air, avId): DistributedBattleZoneAI.__init__(self, air) # The avatar that is playing in this sewer. self.avId = avId self.setAvatars([avId]) self.suits = []
def delete(self): print("BZone delete") self.lost = None DistributedBattleZoneAI.delete(self)
def announceGenerate(self): DistributedBattleZoneAI.announceGenerate(self) # Let's go ahead and add the avatar doing the tutorial to the battleZone's list and data dict. self.addAvatar(self.avatarId) base.taskMgr.add(self.__monitorAvatar, self.uniqueName('monitorAvatar'))
def __init__(self, air, avatarId): DistributedBattleZoneAI.__init__(self, air) self.avatarId = avatarId self.av = self.air.doId2do.get(self.avatarId) self.tutSuit = None self.suitsKilled = 0
def delete(self): self.avId = None DistributedBattleZoneAI.delete(self)