From 3d3bf4ce2cb8ad63d8665cbef14b59654949a5f2 Mon Sep 17 00:00:00 2001 From: DarkPhoenix Date: Thu, 22 Aug 2019 12:38:39 +0300 Subject: [PATCH] Implement fighter ability resistance support into dps graph --- graphs/data/fitDamageStats/calc/application.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/graphs/data/fitDamageStats/calc/application.py b/graphs/data/fitDamageStats/calc/application.py index a92a536e3..a4d9aa552 100644 --- a/graphs/data/fitDamageStats/calc/application.py +++ b/graphs/data/fitDamageStats/calc/application.py @@ -24,6 +24,7 @@ from functools import lru_cache from eos.const import FittingHardpoint from eos.utils.float import floatUnerr from graphs.calc import calculateRangeFactor +from service.attribute import Attribute from service.const import GraphDpsDroneMode from service.settings import GraphSettings @@ -97,6 +98,7 @@ def getApplicationPerKey(src, tgt, atkSpeed, atkAngle, distance, tgtSpeed, tgtAn fighter=fighter, ability=ability, src=src, + tgt=tgt, distance=distance, tgtSpeed=tgtSpeed, tgtSigRadius=tgtSigRadius) @@ -237,7 +239,7 @@ def getDroneMult(drone, src, tgt, atkSpeed, atkAngle, distance, tgtSpeed, tgtAng return mult -def getFighterAbilityMult(fighter, ability, src, distance, tgtSpeed, tgtSigRadius): +def getFighterAbilityMult(fighter, ability, src, tgt, distance, tgtSpeed, tgtSigRadius): fighterSpeed = fighter.getModifiedItemAttr('maxVelocity') attrPrefix = ability.attrPrefix # It's bomb attack @@ -273,7 +275,14 @@ def getFighterAbilityMult(fighter, ability, src, distance, tgtSpeed, tgtSigRadiu atkDrf=_calcAggregatedDrf(reductionFactor=drf, reductionSensitivity=drs), tgtSpeed=tgtSpeed, tgtSigRadius=tgtSigRadius) - mult = rangeFactor * missileFactor + resistMult = 1 + if tgt.isFit: + resistAttrID = fighter.getModifiedItemAttr('{}ResistanceID'.format(attrPrefix)) + if resistAttrID: + resistAttrInfo = Attribute.getInstance().getAttributeInfo(resistAttrID) + if resistAttrInfo is not None: + resistMult = tgt.item.ship.getModifiedItemAttr(resistAttrInfo.name, 1) + mult = rangeFactor * missileFactor * resistMult return mult