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')
Exemple #2
0
def _updateDeviceState(self, value):
    device = value[0]
    state = value[2]
    if device in DEVICES:
        if 'destroyed' != state:
            RepairTimers.stopTimer(device)
        as_event(EVENTS[device])
Exemple #3
0
 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')
Exemple #4
0
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')
Exemple #5
0
 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')
Exemple #8
0
 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')
Exemple #9
0
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')
Exemple #14
0
 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')
Exemple #16
0
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())
Exemple #22
0
 def setAlive(self, isAlive):
     self.isAlive = isAlive
     as_event(ON_ALIVE_STATE_CHANGED)
Exemple #23
0
 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)
Exemple #24
0
 def updateCrosshairMode(self, eMode):
     self.crosshairMode = eMode
     as_event(ON_VIEW_CHANGED)
Exemple #25
0
 def update(self):
     self.calcEfficiency()
     self.pickColors()
     as_event('ON_BATTLE_EFFICIENCY')
Exemple #26
0
 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')