Add drone volleys
This commit is contained in:
@@ -35,6 +35,7 @@ class Drone(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut):
|
||||
self.amount = 0
|
||||
self.amountActive = 0
|
||||
self.__dps = None
|
||||
self.__volley = None
|
||||
self.__miningyield = None
|
||||
self.projected = False
|
||||
self.__itemModifiedAttributes = ModifiedAttributeDict()
|
||||
@@ -43,6 +44,7 @@ class Drone(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut):
|
||||
@reconstructor
|
||||
def init(self):
|
||||
self.__dps = None
|
||||
self.__volley = None
|
||||
self.__miningyield = None
|
||||
self.__item = None
|
||||
self.__charge = None
|
||||
@@ -115,6 +117,8 @@ class Drone(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut):
|
||||
|
||||
def damageStats(self, targetResists = None):
|
||||
if self.__dps == None:
|
||||
self.__volley = 0
|
||||
self.__dps = 0
|
||||
if self.dealsDamage is True and self.amountActive > 0:
|
||||
if self.hasAmmo:
|
||||
attr = "missileLaunchDuration"
|
||||
@@ -128,11 +132,10 @@ class Drone(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut):
|
||||
volley = sum(map(lambda d: (getter("%sDamage"%d) or 0) * (1-getattr(targetResists, "%sAmount"%d, 0)), self.DAMAGE_TYPES))
|
||||
volley *= self.amountActive
|
||||
volley *= self.getModifiedItemAttr("damageMultiplier") or 1
|
||||
self.__volley = volley
|
||||
self.__dps = volley / (cycleTime / 1000.0)
|
||||
else:
|
||||
self.__dps = 0
|
||||
|
||||
return self.__dps
|
||||
return self.__dps, self.__volley
|
||||
|
||||
@property
|
||||
def miningStats(self):
|
||||
@@ -186,6 +189,7 @@ class Drone(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut):
|
||||
|
||||
def clear(self):
|
||||
self.__dps = None
|
||||
self.__volley = None
|
||||
self.__miningyield = None
|
||||
self.itemModifiedAttributes.clear()
|
||||
self.chargeModifiedAttributes.clear()
|
||||
|
||||
@@ -80,6 +80,7 @@ class Fit(object):
|
||||
self.__minerYield = None
|
||||
self.__weaponVolley = None
|
||||
self.__droneDPS = None
|
||||
self.__droneVolley = None
|
||||
self.__droneYield = None
|
||||
self.__sustainableTank = None
|
||||
self.__effectiveSustainableTank = None
|
||||
@@ -109,6 +110,7 @@ class Fit(object):
|
||||
self.__weaponDPS = None
|
||||
self.__weaponVolley = None
|
||||
self.__droneDPS = None
|
||||
self.__droneVolley = None
|
||||
|
||||
@property
|
||||
def damagePattern(self):
|
||||
@@ -190,10 +192,21 @@ class Fit(object):
|
||||
|
||||
return self.__droneDPS
|
||||
|
||||
@property
|
||||
def droneVolley(self):
|
||||
if self.__droneVolley is None:
|
||||
self.calculateWeaponStats()
|
||||
|
||||
return self.__droneVolley
|
||||
|
||||
@property
|
||||
def totalDPS(self):
|
||||
return self.droneDPS + self.weaponDPS
|
||||
|
||||
@property
|
||||
def totalVolley(self):
|
||||
return self.droneVolley + self.weaponVolley
|
||||
|
||||
@property
|
||||
def minerYield(self):
|
||||
if self.__minerYield is None:
|
||||
@@ -279,6 +292,7 @@ class Fit(object):
|
||||
self.__effectiveSustainableTank = None
|
||||
self.__sustainableTank = None
|
||||
self.__droneDPS = None
|
||||
self.__droneVolley = None
|
||||
self.__droneYield = None
|
||||
self.__ehp = None
|
||||
self.__calculated = False
|
||||
@@ -821,6 +835,7 @@ class Fit(object):
|
||||
weaponDPS = 0
|
||||
droneDPS = 0
|
||||
weaponVolley = 0
|
||||
droneVolley = 0
|
||||
|
||||
for mod in self.modules:
|
||||
dps, volley = mod.damageStats(self.targetResists)
|
||||
@@ -828,11 +843,14 @@ class Fit(object):
|
||||
weaponVolley += volley
|
||||
|
||||
for drone in self.drones:
|
||||
droneDPS += drone.damageStats(self.targetResists)
|
||||
dps, volley = drone.damageStats(self.targetResists)
|
||||
droneDPS += dps
|
||||
droneVolley += volley
|
||||
|
||||
self.__weaponDPS = weaponDPS
|
||||
self.__weaponVolley = weaponVolley
|
||||
self.__droneDPS = droneDPS
|
||||
self.__droneVolley = droneVolley
|
||||
|
||||
@property
|
||||
def fits(self):
|
||||
|
||||
@@ -30,6 +30,7 @@ class FirepowerViewFull(StatsView):
|
||||
StatsView.__init__(self)
|
||||
self.parent = parent
|
||||
self._cachedValues = []
|
||||
|
||||
def getHeaderText(self, fit):
|
||||
return "Firepower"
|
||||
|
||||
@@ -44,7 +45,7 @@ class FirepowerViewFull(StatsView):
|
||||
self.headerPanel = headerPanel
|
||||
headerContentSizer = wx.BoxSizer(wx.HORIZONTAL)
|
||||
hsizer = headerPanel.GetSizer()
|
||||
hsizer.Add(headerContentSizer,0,0,0)
|
||||
hsizer.Add(headerContentSizer, 0, 0, 0)
|
||||
self.stEff = wx.StaticText(headerPanel, wx.ID_ANY, "( Effective )")
|
||||
headerContentSizer.Add(self.stEff)
|
||||
headerPanel.GetParent().AddToggleItem(self.stEff)
|
||||
@@ -54,7 +55,7 @@ class FirepowerViewFull(StatsView):
|
||||
sizerFirepower = wx.FlexGridSizer(1, 4)
|
||||
sizerFirepower.AddGrowableCol(1)
|
||||
|
||||
contentSizer.Add( sizerFirepower, 0, wx.EXPAND, 0)
|
||||
contentSizer.Add(sizerFirepower, 0, wx.EXPAND, 0)
|
||||
|
||||
counter = 0
|
||||
|
||||
@@ -73,10 +74,9 @@ class FirepowerViewFull(StatsView):
|
||||
box.Add(hbox, 1, wx.ALIGN_CENTER)
|
||||
|
||||
lbl = wx.StaticText(parent, wx.ID_ANY, "0.0 DPS")
|
||||
setattr(self, "label%sDps%s" % (panel.capitalize() ,damageType.capitalize()), lbl)
|
||||
setattr(self, "label%sDps%s" % (panel.capitalize(), damageType.capitalize()), lbl)
|
||||
|
||||
hbox.Add(lbl, 0, wx.ALIGN_CENTER)
|
||||
# hbox.Add(wx.StaticText(parent, wx.ID_ANY, " DPS"), 0, wx.ALIGN_CENTER)
|
||||
self._cachedValues.append(0)
|
||||
counter += 1
|
||||
targetSizer = sizerFirepower
|
||||
@@ -143,7 +143,7 @@ class FirepowerViewFull(StatsView):
|
||||
|
||||
stats = (("labelFullDpsWeapon", lambda: fit.weaponDPS, 3, 0, 0, "%s DPS",None),
|
||||
("labelFullDpsDrone", lambda: fit.droneDPS, 3, 0, 0, "%s DPS", None),
|
||||
("labelFullVolleyTotal", lambda: fit.weaponVolley, 3, 0, 0, "%s", "Volley: %.1f"),
|
||||
("labelFullVolleyTotal", lambda: fit.totalVolley, 3, 0, 0, "%s", "Volley: %.1f"),
|
||||
("labelFullDpsTotal", lambda: fit.totalDPS, 3, 0, 0, "%s", None))
|
||||
# See GH issue #
|
||||
#if fit is not None and fit.totalYield > 0:
|
||||
|
||||
Reference in New Issue
Block a user