From 7d37b9e0e077e05a6dc494540bc93e4e9ec440d0 Mon Sep 17 00:00:00 2001 From: DarkPhoenix Date: Sun, 12 May 2019 02:49:21 +0300 Subject: [PATCH] Implement volley parameters for modules --- eos/saveddata/module.py | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/eos/saveddata/module.py b/eos/saveddata/module.py index c8ddf691e..cba89a8b8 100644 --- a/eos/saveddata/module.py +++ b/eos/saveddata/module.py @@ -410,13 +410,14 @@ class Module(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut): return self.__miningyield - def getVolley(self, spoolOptions=None, targetResists=None, ignoreState=False): + def getVolleyParameters(self, spoolOptions=None, targetResists=None, ignoreState=False): if self.isEmpty or (self.state < FittingModuleState.ACTIVE and not ignoreState): - return DmgTypes(0, 0, 0, 0) + return {0: DmgTypes(0, 0, 0, 0)} if self.__baseVolley is None: + self.__baseVolley = {} dmgGetter = self.getModifiedChargeAttr if self.charge else self.getModifiedItemAttr dmgMult = self.getModifiedItemAttr("damageMultiplier", 1) - self.__baseVolley = DmgTypes( + self.__baseVolley[0] = DmgTypes( em=(dmgGetter("emDamage", 0)) * dmgMult, thermal=(dmgGetter("thermalDamage", 0)) * dmgMult, kinetic=(dmgGetter("kineticDamage", 0)) * dmgMult, @@ -427,12 +428,20 @@ class Module(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut): self.getModifiedItemAttr("damageMultiplierBonusPerCycle", 0), self.rawCycleTime / 1000, spoolType, spoolAmount)[0] spoolMultiplier = 1 + spoolBoost - volley = DmgTypes( - em=self.__baseVolley.em * spoolMultiplier * (1 - getattr(targetResists, "emAmount", 0)), - thermal=self.__baseVolley.thermal * spoolMultiplier * (1 - getattr(targetResists, "thermalAmount", 0)), - kinetic=self.__baseVolley.kinetic * spoolMultiplier * (1 - getattr(targetResists, "kineticAmount", 0)), - explosive=self.__baseVolley.explosive * spoolMultiplier * (1 - getattr(targetResists, "explosiveAmount", 0))) - return volley + adjustedVolley = {} + for volleyTime, volleyValue in self.__baseVolley.items(): + adjustedVolley[volleyTime] = DmgTypes( + em=volleyValue.em * spoolMultiplier * (1 - getattr(targetResists, "emAmount", 0)), + thermal=volleyValue.thermal * spoolMultiplier * (1 - getattr(targetResists, "thermalAmount", 0)), + kinetic=volleyValue.kinetic * spoolMultiplier * (1 - getattr(targetResists, "kineticAmount", 0)), + explosive=volleyValue.explosive * spoolMultiplier * (1 - getattr(targetResists, "explosiveAmount", 0))) + return adjustedVolley + + def getVolley(self, spoolOptions=None, targetResists=None, ignoreState=False): + volleyParams = self.getVolleyParameters(spoolOptions=spoolOptions, targetResists=targetResists, ignoreState=ignoreState) + if len(volleyParams) == 0: + return DmgTypes(0, 0, 0, 0) + return volleyParams[min(volleyParams)] def getDps(self, spoolOptions=None, targetResists=None, ignoreState=False): volley = self.getVolley(spoolOptions=spoolOptions, targetResists=targetResists, ignoreState=ignoreState)