diff --git a/eos/graph/fitDmgVsTime.py b/eos/graph/fitDmgVsTime.py index 6c00ff450..8ab75e855 100644 --- a/eos/graph/fitDmgVsTime.py +++ b/eos/graph/fitDmgVsTime.py @@ -98,6 +98,8 @@ class FitDmgVsTimeGraph(Graph): # We'll handle calculations in milliseconds maxTime = maxTime * 1000 for mod in fit.modules: + if not mod.isDealingDamage(): + continue cycleParams = mod.getCycleParameters(reloadOverride=True) if cycleParams is None: continue @@ -117,6 +119,8 @@ class FitDmgVsTimeGraph(Graph): if currentTime > maxTime: break for drone in fit.drones: + if not drone.isDealingDamage(): + continue cycleParams = drone.getCycleParameters(reloadOverride=True) if cycleParams is None: continue @@ -131,6 +135,8 @@ class FitDmgVsTimeGraph(Graph): if currentTime > maxTime: break for fighter in fit.fighters: + if not fighter.isDealingDamage(): + continue cycleParams = fighter.getCycleParametersPerEffectOptimizedDps(reloadOverride=True) if cycleParams is None: continue diff --git a/eos/graph/fitDpsVsTime.py b/eos/graph/fitDpsVsTime.py index a538bd090..38e12b108 100644 --- a/eos/graph/fitDpsVsTime.py +++ b/eos/graph/fitDpsVsTime.py @@ -94,6 +94,8 @@ class FitDpsTimeGraph(Graph): # We'll handle calculations in milliseconds maxTime = maxTime * 1000 for mod in fit.modules: + if not mod.isDealingDamage(): + continue cycleParams = mod.getCycleParameters(reloadOverride=True) if cycleParams is None: continue @@ -114,6 +116,8 @@ class FitDpsTimeGraph(Graph): if currentTime > maxTime: break for drone in fit.drones: + if not drone.isDealingDamage(): + continue cycleParams = drone.getCycleParameters(reloadOverride=True) if cycleParams is None: continue @@ -129,6 +133,8 @@ class FitDpsTimeGraph(Graph): if currentTime > maxTime: break for fighter in fit.fighters: + if not fighter.isDealingDamage(): + continue cycleParams = fighter.getCycleParametersPerEffectOptimizedDps(reloadOverride=True) if cycleParams is None: continue diff --git a/eos/saveddata/drone.py b/eos/saveddata/drone.py index d6c818465..e8c798eec 100644 --- a/eos/saveddata/drone.py +++ b/eos/saveddata/drone.py @@ -131,6 +131,13 @@ class Drone(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut): def hasAmmo(self): return self.charge is not None + def isDealingDamage(self): + volleyParams = self.getVolleyParameters() + for volley in volleyParams.values(): + if volley.total > 0: + return True + return False + def getVolleyParameters(self, targetResists=None): if not self.dealsDamage or self.amountActive <= 0: return {0: DmgTypes(0, 0, 0, 0)} diff --git a/eos/saveddata/fighter.py b/eos/saveddata/fighter.py index 3cd604323..9a079bbcd 100644 --- a/eos/saveddata/fighter.py +++ b/eos/saveddata/fighter.py @@ -175,6 +175,14 @@ class Fighter(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut): def hasAmmo(self): return self.charge is not None + def isDealingDamage(self): + volleyParams = self.getVolleyParametersPerEffect() + for effectData in volleyParams.values(): + for volley in effectData.values(): + if volley.total > 0: + return True + return False + def getVolleyParametersPerEffect(self, targetResists=None): if not self.active or self.amountActive <= 0: return {} diff --git a/eos/saveddata/module.py b/eos/saveddata/module.py index bf6eeffe3..65d37fd8e 100644 --- a/eos/saveddata/module.py +++ b/eos/saveddata/module.py @@ -414,6 +414,13 @@ class Module(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut): return self.__miningyield + def isDealingDamage(self, ignoreState=False): + volleyParams = self.getVolleyParameters(ignoreState=ignoreState) + for volley in volleyParams.values(): + if volley.total > 0: + return True + return False + def getVolleyParameters(self, spoolOptions=None, targetResists=None, ignoreState=False): if self.isEmpty or (self.state < FittingModuleState.ACTIVE and not ignoreState): return {0: DmgTypes(0, 0, 0, 0)}