def _getMarkerSymbol(self, vehicleID): vehicleArenaInfoVO = self.__sessionProvider.getArenaDP( ).getVehicleInfo(vehicleID) return settings.BRmarkersSymbolsNames.BRANDER_BOT_SYMBOL if isSpawnedBot( vehicleArenaInfoVO.vehicleType.tags) else super( BattleRoyaleVehicleMarkerPlugin, self)._getMarkerSymbol(vehicleID)
def playEffect(self, kind, *modifs): self._stopEffects() if kind == 'empty' or self._vehicle is None: return else: enableDecal = True if kind in ('explosion', 'destruction') and self.isFlying: enableDecal = False if self.isUnderwater: if kind not in ('submersionDeath',): return effects = self.typeDescriptor.type.effects[kind] if not effects: return vehicle = self._vehicle effects = random.choice(effects) args = dict(isPlayerVehicle=vehicle.isPlayerVehicle, showShockWave=vehicle.isPlayerVehicle, showFlashBang=vehicle.isPlayerVehicle, entity_id=vehicle.id, isPlayer=vehicle.isPlayerVehicle, showDecal=enableDecal, start=vehicle.position + Math.Vector3(0.0, 1.0, 0.0), end=vehicle.position + Math.Vector3(0.0, -1.0, 0.0)) if isSpawnedBot(self.typeDescriptor.type.tags) and kind in ('explosion', 'destruction'): if isPlayerAvatar(): if self.isFlying: instantExplosionEff = self.typeDescriptor.type.effects['instantExplosion'] if instantExplosionEff: effects = random.choice(instantExplosionEff) BigWorld.player().terrainEffects.addNew(self._vehicle.position, effects[1], effects[0], None, **args) else: self.boundEffects.addNew(None, effects[1], effects[0], **args) return
def _getVehicleData(arenaDP, vehArenaID): vTypeInfoVO = arenaDP.getVehicleInfo(vehArenaID).vehicleType vehicleClassTag = vTypeInfoVO.classTag or '' vehicleName = vTypeInfoVO.shortNameWithPrefix if isBattleRoyale(vTypeInfoVO.tags) and isSpawnedBot(vTypeInfoVO.tags): vehicleClassTag = '' return (vehicleName, vehicleClassTag)
def format(self, vInfoVO, playerName=None): if isSpawnedBot(vInfoVO.vehicleType.tags): botVehID = vInfoVO.vehicleID botVehicle = BigWorld.entities.get(botVehID) if botVehicle: masterVehId = botVehicle.masterVehID for vI in self.__sessionProvider.getArenaDP( ).getVehiclesInfoIterator(): if vI.vehicleID == masterVehId: vInfoVO = vI break else: defBotName = ' ' _logger.warning( 'The Master vehicle of a bot (id=%s) has not been found, use default name %s', botVehID, defBotName) vInfoVO = VehicleArenaInfoVO(botVehID) return super(BattleRoyalePlayerFullNameFormatter, self).format(vInfoVO, playerName=defBotName) else: defBotName = ' ' _logger.warning( 'Bot vehicle (id=%s) has not been found, use default name %s', botVehID, defBotName) vInfoVO = VehicleArenaInfoVO(botVehID) return super(BattleRoyalePlayerFullNameFormatter, self).format(vInfoVO, playerName=defBotName) selfFormat = super(BattleRoyalePlayerFullNameFormatter, self).format(vInfoVO, playerName) return selfFormat
def _setVehicleInfo(self, vehicleID, entry, vInfo, guiProps, isSpotted=False): super(BattleRoyaleVehiclePlugin, self)._setVehicleInfo(vehicleID, entry, vInfo, guiProps, isSpotted) playerName = '' playerFakeName = '' playerClan = '' playerInfoVO = vInfo.player isSpawnedBotVehicle = isSpawnedBot(vInfo.vehicleType.tags) if guiProps.isFriend: if isSpawnedBotVehicle: marker = self.__getSquadBotVehMarker() else: marker = self.__getSquadVehMarker() playerName = playerInfoVO.name playerFakeName = playerInfoVO.fakeName playerClan = playerInfoVO.clanAbbrev entryName = 'squadman' else: if isSpawnedBotVehicle: marker = self.__getEnemyBotVehMarker() else: marker = self.__getEnemyVehMarker() entryName = 'enemy' self.parentObj.invoke(entry.getID(), 'show', marker, playerName, playerFakeName, playerClan, entryName)
def _getSpawnedBotMsgData(vehicleID, battleSessionProvider=None): ctx = battleSessionProvider.getCtx() vTypeInfoVO = ctx.getArenaDP().getVehicleInfo(vehicleID).vehicleType if isSpawnedBot(vTypeInfoVO.tags): botMasterPlayer = ctx.getPlayerFullName(vehicleID, showVehShortName=False) playerInfo = '%s (%s)' % (botMasterPlayer, vTypeInfoVO.shortNameWithPrefix) return ('ALLY_HIT', {'entity': playerInfo}, (('entity', vehicleID),)) else: return None
def updateVehiclesStats(self, updated, arenaDP): getVehicleInfo = arenaDP.getVehicleInfo for _, vStatsVO in updated: vInfoVO = getVehicleInfo(vStatsVO.vehicleID) if isSpawnedBot( vInfoVO.vehicleType.tags ) and vStatsVO.spottedStatus == VehicleSpottedStatus.SPOTTED: vehicleDescr = vehicles.VehicleDescr( compactDescr=vInfoVO.vehicleType.strCompactDescr) if vehicleDescr.type.name == self.__KAMIKAZE_VEH_NAME: BREvents.playSound(BREvents.KAMIKAZE_DETECTED)
def __initSquadPlayers(self): self.__vehicleIDs = [] arenaDP = self.__sessionProvider.getArenaDP() collection = vos_collections.AllyItemsCollection().ids(arenaDP) names = [] clans = [] for vId in collection: vInfoVO = arenaDP.getVehicleInfo(vId) playerVehId = BigWorld.player().observedVehicleID or arenaDP.getPlayerVehicleID() if not vInfoVO.isObserver() and playerVehId != vId and not isSpawnedBot(vInfoVO.vehicleType.tags): self.__vehicleIDs.append(vId) names.append(vInfoVO.player.name) clanAbbrev = getClanAbbrevString(vInfoVO.player.clanAbbrev) if vInfoVO.player.clanAbbrev else None clans.append(clanAbbrev) self.as_setInitDataS(backport.text(R.strings.battle_royale.playersPanel.title()), names, clans) return
def __addMarkerToPool(self, vehicleID, vInfo, vProxy=None): if not vInfo.isAlive() and isSpawnedBot(vInfo.vehicleType.tags): return else: if vProxy is not None: matrixProvider = self._clazz.fetchMatrixProvider(vProxy) active = True else: matrixProvider = None active = False markerID = self._createMarkerWithMatrix(self._getMarkerSymbol(vehicleID), matrixProvider=matrixProvider, active=active) self._setMarkerRenderInfo(markerID, _VEHICLE_MARKER_MIN_SCALE, _VEHICLE_MARKER_BOUNDS, _INNER_VEHICLE_MARKER_BOUNDS, _VEHICLE_MARKER_CULL_DISTANCE, _VEHICLE_MARKER_BOUNDS_MIN_SCALE) marker = self._clazz(markerID, vehicleID, vProxy=vProxy, active=active, isPlayerTeam=vInfo.team == avatar_getter.getPlayerTeam()) marker.onVehicleModelChanged += self.__onVehicleModelChanged self._markers[vehicleID] = marker if marker.isActive(): if not marker.isAlive(): self.__updateMarkerState(markerID, 'dead', True, '') self._setMarkerBoundEnabled(markerID, False) elif not avatar_getter.isVehicleAlive() and marker.getIsPlayerTeam(): self._setMarkerBoundEnabled(markerID, False) return marker
def _setVehicleInfo(self, vehicleID, entry, vInfo, guiProps, isSpotted=False): super(BattleRoyaleVehiclePlugin, self)._setVehicleInfo(vehicleID, entry, vInfo, guiProps, isSpotted) playerName = '' playerFakeName = '' playerClan = '' playerInfoVO = vInfo.player isSpawnedBotVehicle = isSpawnedBot(vInfo.vehicleType.tags) if guiProps.isFriend: if isSpawnedBotVehicle: marker = self.__getBotVehMarker() else: marker = self.__getSquadVehMarker() playerName = playerInfoVO.name playerFakeName = playerInfoVO.fakeName playerClan = playerInfoVO.clanAbbrev entryName = 'squadman' else: if isSpawnedBotVehicle: marker = self.__getBotVehMarker() else: marker = self.__getEnemyVehMarker() entryName = 'enemy' if not self.__isMinimapSmall and not isSpawnedBotVehicle: marker = '_'.join((marker, 'big')) if avatar_getter.isVehiclesColorized(): if self.__sessionProvider.arenaVisitor.getArenaBonusType( ) == ARENA_BONUS_TYPE.BATTLE_ROYALE_TRN_SOLO: playerName = '' entryName = 'team{}'.format(vInfo.team) self.parentObj.invoke(entry.getID(), 'show', marker, playerName, playerFakeName, playerClan, entryName)
def addVehicleInfo(self, vInfoVO, arenaDP): if not vInfoVO.isObserver() and vInfoVO.isAlive() and not isSpawnedBot( vInfoVO.vehicleType.tags): self.__addToVehicles(vInfoVO) self.__updateData()
def __getVehicleMarker(self, vInfo=None): if vInfo and isSpawnedBot(vInfo.vehicleType.tags): return MarkersAs3Descr.AS_ADD_MARKER_BOT_VEHICLE return MarkersAs3Descr.AS_ADD_MARKER_ENEMY_VEHICLE if self.__isMinimapSmall else MarkersAs3Descr.AS_ADD_MARKER_ENEMY_VEHICLE_BIG
def _isVehicleSpawnedBot(vehicleID, battleSessionProvider=None): ctx = battleSessionProvider.getCtx() vTypeInfoVO = ctx.getArenaDP().getVehicleInfo(vehicleID).vehicleType return isSpawnedBot(vTypeInfoVO.tags)
def __onVehicleEnterWorld(self, vehicle): if isSpawnedBot(vehicle.typeDescriptor.type.tags): highlightDelay = getKamikazeEquipmentDescr().clientVisuals.highlightDelay if highlightDelay >= 0.0: self.delayCallback(highlightDelay, self.__showEffect, vehicle.id)
def __needsMarker(vInfo): return vInfo.isAlive() or not isSpawnedBot(vInfo.vehicleType.tags)
def updateVehiclesInfo(self, updated, arenaDP): super(BattleRoyaleVehicleMarkerPlugin, self).updateVehiclesInfo(updated, arenaDP) for _, vInfo in updated: if not vInfo.isAlive() and isSpawnedBot(vInfo.vehicleType.tags): self._hideVehicleMarker(vInfo.vehicleID)
def invalidateVehicleStatus(self, flags, vInfo, arenaDP): if not vInfo.isAlive() and isSpawnedBot(vInfo.vehicleType.tags): self._hideVehicleMarker(vInfo.vehicleID)
def getActiveVehiclesGenerator(self): for vInfo in self.__vInfoVOs.itervalues(): if not isSpawnedBot( vInfo.vehicleType.tags) and not vInfo.isObserver(): yield (vInfo, self.__vStatsVOs[vInfo.vehicleID])
def addVehicleInfo(self, vInfoVO, arenaDP): if not vInfoVO.isObserver() and vInfoVO.isAlive() and not isSpawnedBot( vInfoVO.vehicleType.tags): self.__vehicleTeams[vInfoVO.vehicleID] = vInfoVO.team self.__updateScore()