def infoChargedShell_onCurrentShellChanged(self, intCD): if config.get('sight/enabled', True) and battle.isBattleTypeSupported: if isLastShot: return reset() else: updateCurrentShell(intCD, self.sessionProvider.shared.ammo) as_event('ON_AMMO_CHANGED')
def _updateDeviceState(self, value): device = value[0] state = value[2] if device in DEVICES: if 'destroyed' != state: RepairTimers.stopTimer(device) as_event(EVENTS[device])
def hide(self): if self.timer is not None and self.timer.isStarted(): self.timer.stop() self.timer = None self.textsFormatted = None self.visible = False as_event('ON_INFO_PANEL')
def FragsCollectableStats_addVehicleStatusUpdate(self, vInfoVO): LOG_DEBUG('FragsCollectableStats.addVehicleStatusUpdate(%s) [vehCD=%s]' % (vInfoVO, vInfoVO.vehicleType.compactDescr)) global enemies_wn8, allies_wn8 if len(vehicles) == 0: config.reload() enemies_wn8 = allies_wn8 = 0 vid = vInfoVO.vehicleID vehCD = vInfoVO.vehicleType.compactDescr is_ally = BigWorld.player().team == vInfoVO.team if vInfoVO.isAlive(): if vid not in vehicles: info = xvm_vehinfo.getVehicleInfoData(vehCD) vehicle = dict(vehCD=vehCD, info=info, team=vInfoVO.team) vehicles[vid] = vehicle setVehicleStats(vid, vehicle) else: if vid in vehicles: vehicle = vehicles.pop(vid) if vehicle.get('wn8', None) is not None: if is_ally: allies_wn8 -= vehicle['wn8'] else: enemies_wn8 -= vehicle['wn8'] LOG_DEBUG('ALLIES=%d ENEMIES=%d RATIO=%s' % (allies_wn8, enemies_wn8, (allies_wn8 * 100 / enemies_wn8) if enemies_wn8 != 0 else -1)) as_event('ON_UPDATE_TEAM_RATING')
def startTimer(self, device, duration): self.TIMERS[device]['duration'] = duration if self.TIMERS[device]['timer'] is not None: return self.TIMERS[device]['timer'] = TimeInterval(0.1, self, '{}OnTimer'.format(device)) self.TIMERS[device]['timer'].start() as_event(EVENTS[device])
def as_setVehicleCompareCartButtonVisibleS(self, value): global buttonsState if (value == True) and (countVehicles > 0): buttonsState = True elif (value == False) and (countVehicles == 0): buttonsState = None else: return as_event('ON_VC_BST')
def handleKey(self, isDown, key, mods): global ipHotKey if key != 56: return if isDown and isBattle(): ipHotKey = config.get('custom_texts/battleLabels/info_panel') elif not isDown: ipHotKey = None as_event('ON_INFO_PANEL')
def update(self, vehicle): if self.hotKeyDown: return playerVehicle = player().getVehicleAttached() if playerVehicle is not None: self.visible = True if hasattr(vehicle, 'typeDescriptor'): info_panel_data.init(vehicle, playerVehicle) elif hasattr(playerVehicle, 'typeDescriptor'): info_panel_data.init(None, playerVehicle) self.setTextsFormatted() as_event('ON_INFO_PANEL')
def setVehicleStats(vid, vehicle): global enemies_wn8, allies_wn8 vehicle['stats'] = stats = getPlayerStats(vid) if stats is not None: vehicle['wn8'] = stats.get('wn8', None) info = vehicle['info'] if config.get('useTankRating', False): if 'wn8expDamage' in info and all( k in stats['v'] for k in ('b', 'frg', 'dmg', 'w', 'spo', 'def')): if stats['v']['b'] >= 100: # Compute WN8 for that vehicle rDAMAGE = stats['v']['dmg'] / (stats['v']['b'] * info['wn8expDamage']) rSPOT = stats['v']['spo'] / (stats['v']['b'] * info['wn8expSpot']) rFRAG = stats['v']['frg'] / (stats['v']['b'] * info['wn8expFrag']) rDEF = stats['v']['def'] / (stats['v']['b'] * info['wn8expDef']) rWIN = stats['v']['w'] / (stats['v']['b'] * info['wn8expWinRate']) * 100.0 rWINc = max(0, (rWIN - 0.71) / (1 - 0.71)) rDAMAGEc = max(0, (rDAMAGE - 0.22) / (1 - 0.22)) rFRAGc = max( 0, min(rDAMAGEc + 0.2, (rFRAG - 0.12) / (1 - 0.12))) rSPOTc = max( 0, min(rDAMAGEc + 0.1, (rSPOT - 0.38) / (1 - 0.38))) rDEFc = max( 0, min(rDAMAGEc + 0.1, (rDEF - 0.10) / (1 - 0.10))) WN8 = 980 * rDAMAGEc + 210 * rDAMAGEc * rFRAGc + 155 * rFRAGc * rSPOTc + 75 * rDEFc * rFRAGc + 145 * min( 1.8, rWINc) vehicle['wn8'] = WN8 if vehicle['wn8'] is not None: if BigWorld.player().team == vehicle['team']: allies_wn8 += float(vehicle['wn8']) else: enemies_wn8 += float(vehicle['wn8']) LOG_DEBUG( 'ALLIES=%d ENEMIES=%d RATIO=%s' % (allies_wn8, enemies_wn8, (allies_wn8 * 100 / enemies_wn8) if enemies_wn8 != 0 else -1)) as_event('ON_UPDATE_TEAM_RATING')
def reset(isDead=False): global shellType, goldShell, shellSpeed, shellsSpeed, piercingPower, explosionRadius, damage, caliber, quantityShells if isDead: shellType = None shellsSpeed = {} quantityShells = {} else: shellType = config.get('sight/shellType/not_shell', '') shellSpeed = None goldShell = None piercingPower = None explosionRadius = None damage = None caliber = None as_event('ON_AMMO_CHANGED')
def shellsUpdatedOrAdd(intCD, quantity): global quantityShells, isLastShot sessionProvider = dependency.instance(IBattleSessionProvider) quantityShells[intCD] = quantity quantity = sum(quantityShells.itervalues()) isLastShot = quantity <= 1 ammoCtrl = sessionProvider.shared.ammo CurrentShellCD = ammoCtrl.getCurrentShellCD() if CurrentShellCD is None and ammoCtrl._order: CurrentShellCD = ammoCtrl._order[0] if isLastShot: reset() elif CurrentShellCD == intCD: updateCurrentShell(intCD, ammoCtrl) as_event('ON_AMMO_CHANGED')
def totalEfficiency(self, diff): isUpdate = False if _ETYPE.DAMAGE in diff: self.damage = diff[_ETYPE.DAMAGE] isUpdate = True as_event('ON_DAMAGE_UPDATE') if _ETYPE.ASSIST_DAMAGE in diff: self.assist = diff[_ETYPE.ASSIST_DAMAGE] isUpdate = True if _ETYPE.BLOCKED_DAMAGE in diff: self.blocked = diff[_ETYPE.BLOCKED_DAMAGE] isUpdate = True if _ETYPE.STUN in diff: self.stun = diff[_ETYPE.STUN] isUpdate = True if isUpdate: as_event('ON_EFFICIENCY_UPDATE')
def update(self): calcResult = efficiencyCalculator.calc(self.damage, self.spotted, self.frags, self.defence, self.capture) self.WN8, self.XWN8, self.EFF, self.XEFF, self.XTE, self.DIFFExpDmg = calcResult self.pickColors() as_event('ON_BATTLE_EFFICIENCY')
def onTimer(self, device): self.TIMERS[device]['duration'] -= 0.1 as_event(EVENTS[device])
def updateTeamHealth(self, alliesHP, enemiesHP, totalAlliesHP, totalEnemiesHP): if isBattle(): data.hp_team = [alliesHP, enemiesHP] data.max_hp_team = [float(totalAlliesHP), float(totalEnemiesHP)] as_event('ON_HP_UPDATE')
def resetAll(): for device in DEVICES: RepairTimers.stopTimer(device) as_event(EVENTS[device])
def isTeamHits(self): self.teamHits = True as_event('ON_TEAM_HITS')
def update_hp(vehicleID, hp): if isBattle(): data.updateHp() as_event('ON_HP_UPDATE')
def AvatarInputHandler_onControlModeChanged(self, eMode, **args): global visible newVisible = eMode in DISPLAY_IN_MODES if newVisible != visible: visible = newVisible as_event('ON_AMMO_CHANGED')
def _populate(self): global buttonsState, countVehicles countVehicles = self.comparisonBasket.getVehiclesCount() if countVehicles > 0: buttonsState = True as_event('ON_VC_BST')
def eventHandler(self, device): if device in [LEFTTRACK, RIGHTTRACK, WHEEL]: event = EVENT_TEMPLATE.format(COMPLEX) else: event = EVENT_TEMPLATE.format(device) as_event(event.upper())
def setAlive(self, isAlive): self.isAlive = isAlive as_event(ON_ALIVE_STATE_CHANGED)
def eventHandler(self, eventItem): if eventItem in EVENTABLE_ITEMS: as_event(EVENT_TEMPLATE.format(eventItem.upper())) else: self.log('"%s" is not an eventable item!' % eventItem)
def updateCrosshairMode(self, eMode): self.crosshairMode = eMode as_event(ON_VIEW_CHANGED)
def update(self): self.calcEfficiency() self.pickColors() as_event('ON_BATTLE_EFFICIENCY')
def eventHandler(self, device): if device in (LEFTTRACK, RIGHTTRACK, WHEEL): event = EVENT_TEMPLATE.format(COMPLEX) else: event = EVENT_TEMPLATE.format(device) as_event(event.upper())
def setPeriod(self, period): if period == 2: as_event('ON_PREBATTLE')