Support inflicted damage for breachers

This commit is contained in:
DarkPhoenix
2024-11-13 05:35:41 +01:00
parent 219173c43e
commit dbc2993fb9
3 changed files with 37 additions and 30 deletions

View File

@@ -955,6 +955,13 @@ class Module(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut, M
and ((gang and effect.isType("gang")) or not gang):
effect.handler(fit, self, context, projectionRange, effect=effect)
def getCycleParametersForDps(self, reloadOverride=None):
# Special hack for breachers, since those are DoT and work independently of gun cycle
if self.isBreacher:
return CycleInfo(activeTime=1000, inactiveTime=0, quantity=math.inf, isInactivityReload=False)
else:
return self.getCycleParameters(reloadOverride=reloadOverride)
def getCycleParameters(self, reloadOverride=None):
"""Copied from new eos as well"""
# Determine if we'll take into account reload time or not

View File

@@ -45,6 +45,9 @@ class BreacherInfo:
self.relative *= mul
return self
def __truediv__(self, div):
return type(self)(absolute=self.absolute / div, relative=self.relative / div)
class DmgTypes:
"""
@@ -176,6 +179,17 @@ class DmgTypes:
b *= mul
return self
def __truediv__(self, div):
new = type(self)(
em=self._em / div,
thermal=self._thermal / div,
kinetic=self._kinetic / div,
explosive=self._explosive / div)
new.profile = self.profile
for k, v in self._breachers.items():
new._breachers[k] = [b / div for b in v]
return new
def __bool__(self):
return any((
self._em, self._thermal, self._kinetic, self._explosive,
@@ -199,30 +213,6 @@ class DmgTypes:
return value
class DmgInflicted(DmgTypes):
@classmethod
def from_dmg_types(cls, dmg_types):
return cls(em=dmg_types.em, thermal=dmg_types.thermal, kinetic=dmg_types.kinetic, explosive=dmg_types.explosive, breacher=dmg_types.breacher)
def __add__(self, other):
return type(self)(
em=self.em + other.em,
thermal=self.thermal + other.thermal,
kinetic=self.kinetic + other.kinetic,
explosive=self.explosive + other.explosive,
breacher=self.breacher + other.breacher)
def __iadd__(self, other):
self.em += other.em
self.thermal += other.thermal
self.kinetic += other.kinetic
self.explosive += other.explosive
self.breacher += other.breacher
self._calcTotal()
return self
class RRTypes:
"""Container for tank data stats."""