Exemple #1
0
 def missileSorter(charge):
     # Get charge damage type and total damage
     chargeDamageType, totalDamage = getChargeDamageInfo(charge)
     # Find its position in sort list
     try:
         position = DmgTypes.names().index(chargeDamageType)
     # Put charges which have non-standard damage type after charges with
     # standard damage type
     except ValueError:
         position = math.inf
     return position, totalDamage, charge.name
Exemple #2
0
 def turretSorter(charge):
     damage = 0
     range_ = (mod.item.getAttribute('maxRange')) * \
              (charge.getAttribute('weaponRangeMultiplier') or 1)
     falloff = (mod.item.getAttribute('falloff') or 0) * \
               (charge.getAttribute('fallofMultiplier') or 1)
     for type_ in DmgTypes.names():
         d = charge.getAttribute('%sDamage' % type_)
         if d > 0:
             damage += d
     # Take optimal and falloff as range factor
     rangeFactor = range_ + falloff
     return -rangeFactor, charge.typeName.rsplit(
     )[-2:], damage, charge.name
Exemple #3
0
 def getChargeDamageInfo(charge):
     # Set up data storage for missile damage stuff
     damageMap = {}
     totalDamage = 0
     # Fill them with the data about charge
     for damageType in DmgTypes.names():
         currentDamage = charge.getAttribute(
             '{}Damage'.format(damageType)) or 0
         damageMap[damageType] = currentDamage
         totalDamage += currentDamage
     # Detect type of ammo
     chargeDamageType = None
     for damageType in damageMap:
         # If all damage belongs to certain type purely, set appropriate
         # ammoType
         if damageMap[damageType] == totalDamage:
             chargeDamageType = damageType
             break
     # Else consider ammo as mixed damage
     if chargeDamageType is None:
         chargeDamageType = 'mixed'
     return chargeDamageType, totalDamage
Exemple #4
0
    def generalOutput():
        rowNames = ["EHP"]
        rowNames.extend(RRTypes.names(postProcessor=lambda v: v.capitalize()))
        colNames = DmgTypes.names(short=True,
                                  postProcessor=lambda v: " " + v.capitalize())
        colNames[0] = colNames[0][1::]

        outputScheme = []
        for index, rowName in enumerate(rowNames):
            row = rowName + ": {:>} ("
            subsValue = " {:.0%}," if index > 0 else " {:>},"

            row += ''.join([(colName + ":" + subsValue)
                            for colName in colNames])
            row = row[:-1:] + ")\n"

            outputScheme.append(row)

        return \
            outputScheme[0].format(ehpStr[3], *ehpAgainstDamageTypeStr) + \
            outputScheme[1].format(ehpStr[0], *resists["shield"]) + \
            outputScheme[2].format(ehpStr[1], *resists["armor"]) + \
            outputScheme[3].format(ehpStr[2], *resists["hull"])
Exemple #5
0
from functools import reduce
from eos.saveddata.damagePattern import DamagePattern
from eos.utils.stats import RRTypes, DmgTypes
from gui.utils.numberFormatter import formatAmount

tankTypes = RRTypes.names()
damageTypes = DmgTypes.names()
damagePatterns = [
    DamagePattern.oneType(damageType) for damageType in damageTypes
]
damageTypeResonanceNames = [
    damageType.capitalize() + "DamageResonance" for damageType in damageTypes
]
resonanceNames = {
    tankTypes[0]: [tankTypes[0] + s for s in damageTypeResonanceNames],
    tankTypes[1]: [tankTypes[1] + s for s in damageTypeResonanceNames],
    tankTypes[2]: [s[0].lower() + s[1:] for s in damageTypeResonanceNames]
}


def firepowerSection(fit):
    """ Returns the text of the firepower section"""
    totalDps = fit.getTotalDps().total
    weaponDps = fit.getWeaponDps().total
    droneDps = fit.getDroneDps().total
    totalVolley = fit.getTotalVolley().total
    firepower = [totalDps, weaponDps, droneDps, totalVolley]

    firepowerStr = [formatAmount(dps, 3, 0, 0) for dps in firepower]
    # showWeaponAndDroneDps = (weaponDps > 0) and (droneDps > 0)
    if sum(firepower) == 0:
Exemple #6
0
def test_dmgtypes_names_lambda():
    assert DmgTypes.names(False, lambda v: v.capitalize()) == [
        'Em', 'Thermal', 'Kinetic', 'Explosive'
    ]
    assert DmgTypes.names(True,
                          lambda v: v.upper()) == ['EM', 'TH', 'KIN', 'EXP']
Exemple #7
0
def test_dmgtypes_names():
    assert DmgTypes.names() == ['em', 'thermal', 'kinetic', 'explosive']
    assert DmgTypes.names(True) == ['em', 'th', 'kin', 'exp']
    assert DmgTypes.names(short=True) == ['em', 'th', 'kin', 'exp']