From 7d658c3f3de33ec2532a0116073fbd1f32b4a13f Mon Sep 17 00:00:00 2001 From: cwozniak Date: Fri, 11 Mar 2016 16:15:08 -0500 Subject: [PATCH] Fixed ewar on damage graphs, and added a quick formula for module falloff and applied it to Target Painters and Heavy Grapplers. --- eos/graph/fitDps.py | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/eos/graph/fitDps.py b/eos/graph/fitDps.py index 957f6778b..89da9587b 100644 --- a/eos/graph/fitDps.py +++ b/eos/graph/fitDps.py @@ -40,11 +40,14 @@ class FitDpsGraph(Graph): for mod in fit.modules: if not mod.isEmpty and mod.state >= State.ACTIVE: - if "ewTargetPaint" in mod.item.effects: - ew['signatureRadius'].append(1+(mod.getModifiedItemAttr("signatureRadiusBonus") / 100)) - if "decreaseTargetSpeed" in mod.item.effects: + if "remoteTargetPaintFalloff" in mod.item.effects: + ew['signatureRadius'].append(1+(mod.getModifiedItemAttr("signatureRadiusBonus") / 100) * self.calculateModuleMultiplier(mod, data)) + if "remoteWebifierFalloff" in mod.item.effects: if distance <= mod.getModifiedItemAttr("maxRange"): ew['velocity'].append(1+(mod.getModifiedItemAttr("speedFactor") / 100)) + elif mod.getModifiedItemAttr("falloffEffectiveness") > 0: + #I am affected by falloff + ew['velocity'].append(1+(mod.getModifiedItemAttr("speedFactor") / 100) * self.calculateModuleMultiplier(mod, data)) ew['signatureRadius'].sort(key=abssort) ew['velocity'].sort(key=abssort) @@ -122,3 +125,13 @@ class FitDpsGraph(Graph): rangeEq = ((max(0, distance - turretOptimal)) / turretFalloff) ** 2 return 0.5 ** (trackingEq + rangeEq) + + def calculateModuleMultiplier(self, mod, data): + #Simplified formula, we make some assumptions about the module + #This is basically the calculateTurretChanceToHit without tracking values + distance = data["distance"] * 1000 + turretOptimal = mod.maxRange + turretFalloff = mod.falloff + rangeEq = ((max(0, distance - turretOptimal)) / turretFalloff) ** 2 + + return 0.5 ** (rangeEq)